Hướng dẫn how to draw a image in php? - làm thế nào để vẽ một hình ảnh trong php?

9.4.2. Thay đổi định dạng đầu ra

Như bạn có thể đã suy luận, việc tạo một luồng hình ảnh thuộc một loại khác chỉ yêu cầu hai thay đổi cho tập lệnh: Gửi một loại nội dung khác và sử dụng chức năng tạo hình ảnh khác. Ví dụ 9-2 cho thấy ví dụ 9-1 được sửa đổi để tạo JPEG thay vì hình ảnh PNG.

Ví dụ 9-2. Phiên bản JPEG của Quảng trường Đen

9.4.3. Kiểm tra các định dạng hình ảnh được hỗ trợ

Nếu bạn đang viết mã phải di động trên các hệ thống có thể hỗ trợ các định dạng hình ảnh khác nhau, hãy sử dụng hàm ImageTypes () để kiểm tra các loại hình ảnh nào được hỗ trợ. Hàm này trả về một trường bitfield; Bạn có thể sử dụng bitwise và toán tử (&) để kiểm tra xem một bit nhất định có được đặt không. Các hằng số IMG_GIF, IMG_JPG, IMG_PNG và IMG_WBMP tương ứng với các bit cho các định dạng hình ảnh đó.

Ví dụ 9-3 tạo các tệp PNG nếu PNG được hỗ trợ, các tệp JPEG nếu PNG không được hỗ trợ và các tệp GIF nếu không hỗ trợ PNG và JPEG.

Ví dụ 9-3. Kiểm tra hỗ trợ định dạng hình ảnh

9.4.5. Chức năng vẽ cơ bản

GD có các chức năng để vẽ các điểm cơ bản, đường, cung, hình chữ nhật và đa giác. Phần này mô tả các chức năng cơ sở được hỗ trợ bởi GD 1.x.

Hàm cơ bản nhất là ImageSetPixel (), đặt màu của một pixel được chỉ định:

ImageSetPixel(image, x, y, color);

Có hai chức năng cho các dòng vẽ, ImageLine () và ImageDashEdline ():

ImageLine(image, start_x, start_ y, end_x, end_ y, color);
ImageDashedLine(image, start_x, start_ y, end_x, end_ y, color);

Có hai chức năng để vẽ hình chữ nhật, một hàm chỉ cần vẽ phác thảo và một hàm lấp đầy hình chữ nhật với màu được chỉ định:

ImageRectangle(image, tlx, tly, brx, bry, color);
ImageFilledRectangle(image, tlx, tly, brx, bry, color);

Chỉ định vị trí và kích thước của hình chữ nhật bằng cách truyền tọa độ của các góc trên bên trái và dưới cùng bên phải.

Bạn có thể vẽ các đa giác tùy ý với các hàm ImagePolygon () và ImageFillSpolygon ():

ImagePolygon(image, points, number, color);
ImageFilledPolygon(image, points, number, color);

Cả hai chức năng đều có một loạt các điểm. Mảng này có hai số nguyên (tọa độ X và Y) cho mỗi đỉnh trên đa giác. Đối số số là số lượng các đỉnh trong mảng (thường đếm ($ points)/2).

Hàm IMAGEARC () vẽ một vòng cung (một phần của hình elip):

ImageArc(image, center_x, center_ y, width, height, start, end, color);

Hình elip được xác định bởi tâm, chiều rộng và chiều cao của nó (chiều cao và chiều rộng là giống nhau cho một vòng tròn). Các điểm bắt đầu và cuối của vòng cung được đưa ra dưới dạng độ đếm ngược chiều kim đồng hồ từ 3 giờ. Vẽ hình elip đầy đủ với bắt đầu 0 và kết thúc 360.

Có hai cách để điền vào các hình dạng đã được vẽ. Hàm ImageFill () thực hiện lấp đầy lũ, thay đổi màu của các pixel bắt đầu tại vị trí đã cho. Bất kỳ thay đổi trong màu pixel đánh dấu các giới hạn của điền. Hàm ImageFillToBorder () cho phép bạn vượt qua màu cụ thể của giới hạn điền:

ImageFill(image, x, y, color);
ImageFillToBorder(image, x, y, border_color, color);



Hướng dẫn how to draw a image in php? - làm thế nào để vẽ một hình ảnh trong php?

Bản quyền © 2003 O'Reilly & Associates. Đã đăng ký Bản quyền.

Trong bài viết trước, chúng tôi tập trung vào & nbsp; đã tải và thao tác hình ảnh với PHP. Chúng tôi đã học cách xoay, thay đổi kích thước, mở rộng hoặc lật một hình ảnh. Chúng tôi cũng đã tìm hiểu về các bộ lọc khác nhau và ma trận tích chập. Những hướng dẫn đó cũng bao gồm một số cách sử dụng thực tế của thư viện GD, như thay đổi kích thước tất cả các hình ảnh trong một thư mục hoặc thêm hình mờ trên nhiều hình ảnh cùng một lúc.

Bên cạnh việc sử dụng GD để thao tác với hình ảnh thông thường, chúng ta cũng có thể tự tạo từ đầu. Chúng ta có thể sử dụng các chức năng khác nhau trong thư viện để vẽ các hình dạng cơ bản như hình elip, vòng tròn, hình chữ nhật, đa giác và các đường đơn giản. Với một số toán học, những hình dạng này có thể tạo ra các mẫu đẹp. Ngoài ra còn có các chức năng có sẵn để vẽ văn bản trên hình ảnh được hiển thị, mở ra rất nhiều khả năng.

Hướng dẫn này sẽ dạy bạn cách vẽ các hình dạng cơ bản trong PHP và cách kết xuất văn bản bằng phông chữ yêu thích của bạn.

Đây là bản xem trước về những gì chúng tôi sẽ tạo vào cuối bài:

Hướng dẫn how to draw a image in php? - làm thế nào để vẽ một hình ảnh trong php?
Hướng dẫn how to draw a image in php? - làm thế nào để vẽ một hình ảnh trong php?
Hướng dẫn how to draw a image in php? - làm thế nào để vẽ một hình ảnh trong php?

  • Vẽ các hình dạng cơ bản trong PHP với GD
  • Kiểm soát độ dày đường, kiểu và màu sắc
  • Kết xuất văn bản trên hình ảnh
  • Tạo ra các thiết kế và áp phích đơn giản

Vẽ các hình dạng cơ bản trong PHP với GD

Chúng tôi sẽ tìm hiểu về các hình dạng cơ bản trong phần này và sau đó bao gồm độ dày dòng, bàn chải và kiểu đường sau.

Vẽ các đường

Bạn có thể vẽ một đường thẳng đơn giản giữa hai điểm đã cho bằng hàm

4. Tham số 
5 là tài nguyên hình ảnh sẽ được tạo trước đó bằng cách sử dụng các hàm như 
6 hoặc 
7. Chúng tôi sẽ sử dụng 
6 trong suốt hướng dẫn này để tạo hình ảnh mới từ đầu. Hàm sẽ vẽ một đường ngang nếu 
9 bằng 
ImageSetPixel(image, x, y, color);
0. Tương tự, nó sẽ vẽ một đường thẳng đứng nếu
ImageSetPixel(image, x, y, color);
1 bằng
ImageSetPixel(image, x, y, color);
2.

Vẽ vòng tròn và vòng cung

Hàm

ImageSetPixel(image, x, y, color);
3 có thể vẽ các cung tròn bằng cách sử dụng
ImageSetPixel(image, x, y, color);
4 và
ImageSetPixel(image, x, y, color);
5 làm trung tâm của nó. Các tham số
ImageSetPixel(image, x, y, color);
6 và
ImageSetPixel(image, x, y, color);
7 xác định kích thước của cung trên các trục khác nhau. Các tham số
ImageSetPixel(image, x, y, color);
8 và
ImageSetPixel(image, x, y, color);
9 chỉ định góc bắt đầu và kết thúc của cung theo độ. Nếu bạn muốn vẽ các cung hoàn chỉnh từ 0 đến 360 độ, bạn có thể sử dụng hàm
ImageLine(image, start_x, start_ y, end_x, end_ y, color);
ImageDashedLine(image, start_x, start_ y, end_x, end_ y, color);
0 thay thế.

Vẽ hình chữ nhật và đa giác

Bạn có thể vẽ hình chữ nhật trên một hình ảnh bằng hàm

ImageLine(image, start_x, start_ y, end_x, end_ y, color);
ImageDashedLine(image, start_x, start_ y, end_x, end_ y, color);
1. Các giá trị
ImageSetPixel(image, x, y, color);
1 và
9 xác định góc trên cùng bên trái của hình chữ nhật. Các giá trị 
ImageSetPixel(image, x, y, color);
2 và
ImageSetPixel(image, x, y, color);
0 xác định góc dưới bên phải. Ngoài ra còn có hàm
ImageLine(image, start_x, start_ y, end_x, end_ y, color);
ImageDashedLine(image, start_x, start_ y, end_x, end_ y, color);
6, có thể tạo ra một đa giác với bất kỳ số lượng hoặc điểm nào. Tham số
ImageLine(image, start_x, start_ y, end_x, end_ y, color);
ImageDashedLine(image, start_x, start_ y, end_x, end_ y, color);
7 là một mảng trong đó hai phần tử được ghép nối để có được tọa độ của một điểm cụ thể. & NBSP;

Một chức năng khác được gọi là

ImageLine(image, start_x, start_ y, end_x, end_ y, color);
ImageDashedLine(image, start_x, start_ y, end_x, end_ y, color);
8 đã được thêm vào Php 7, không vẽ một đường giữa điểm đầu tiên và điểm cuối cùng.

Đặt nó lại với nhau để tạo ra một bản vẽ

Trong ví dụ sau, chúng tôi đã sử dụng tất cả các chức năng này để tạo ra một bản vẽ dòng với túp lều, mặt trời và mặt đất.

Điều quan trọng ở đây là chỉ để tìm ra giá trị của các tọa độ khác nhau. Tôi muốn vẽ mọi thứ liên quan đến kích thước của hình ảnh gốc, vì vậy tôi đã sử dụng các biến

ImageLine(image, start_x, start_ y, end_x, end_ y, color);
ImageDashedLine(image, start_x, start_ y, end_x, end_ y, color);
9 và
ImageRectangle(image, tlx, tly, brx, bry, color);
ImageFilledRectangle(image, tlx, tly, brx, bry, color);
0 để tính toán tọa độ của các điểm khác nhau.

Hướng dẫn how to draw a image in php? - làm thế nào để vẽ một hình ảnh trong php?
Hướng dẫn how to draw a image in php? - làm thế nào để vẽ một hình ảnh trong php?
Hướng dẫn how to draw a image in php? - làm thế nào để vẽ một hình ảnh trong php?

Kiểm soát độ dày đường, kiểu và màu sắc

Hình ảnh trên có một vài vấn đề, như các đường rất mỏng và không tô màu. Tất cả các vấn đề này có thể được khắc phục dễ dàng bằng cách sử dụng các chức năng như

ImageRectangle(image, tlx, tly, brx, bry, color);
ImageFilledRectangle(image, tlx, tly, brx, bry, color);
1 và
ImageRectangle(image, tlx, tly, brx, bry, color);
ImageFilledRectangle(image, tlx, tly, brx, bry, color);
2.

Độ dày đường

Hàm

ImageRectangle(image, tlx, tly, brx, bry, color);
ImageFilledRectangle(image, tlx, tly, brx, bry, color);
3 đặt độ dày của các đường được hiển thị khi vẽ hình chữ nhật, đa giác, cung, v.v.

Vẽ hình dạng đầy

Mỗi chức năng vẽ cũng có một phiên bản màu đầy, lấp đầy hình cụ thể đó với một màu nhất định. Ví dụ,

ImageRectangle(image, tlx, tly, brx, bry, color);
ImageFilledRectangle(image, tlx, tly, brx, bry, color);
2 sẽ lấp đầy hình chữ nhật được vẽ bằng màu đã cho.

Sử dụng bàn chải

Một hàm GD rất hữu ích là

ImageRectangle(image, tlx, tly, brx, bry, color);
ImageFilledRectangle(image, tlx, tly, brx, bry, color);
9. Tham số
ImagePolygon(image, points, number, color);
ImageFilledPolygon(image, points, number, color);
0 trong hàm này chỉ là một tài nguyên hình ảnh khác có thể được sử dụng để vẽ các dòng. Chẳng hạn, bạn có thể sử dụng bản vẽ vectơ trong suốt của một bông hoa như một bàn chải để thêm các mẫu hoa đẹp vào hình ảnh của bạn. Đoạn mã được đưa ra dưới đây được viết để sử dụng hình ảnh của đám mây làm bàn chải khi vẽ một điểm. Điều này thêm một đám mây duy nhất trên bầu trời của chúng tôi.

Tôi đã tìm thấy hình ảnh đám mây này & nbsp; trên pixabay và thu nhỏ nó xuống một kích thước phù hợp cho dự án của chúng tôi.

Mã hoàn chỉnh cho hình ảnh túp lều được đưa ra dưới đây. Chúng tôi chỉ cần thêm hai phiên bản của mỗi hình, một để vẽ phác thảo và một phiên bản khác để điền vào màu.

0

Đây là kết quả cuối cùng của mã GD PHP ở trên.

Hướng dẫn how to draw a image in php? - làm thế nào để vẽ một hình ảnh trong php?
Hướng dẫn how to draw a image in php? - làm thế nào để vẽ một hình ảnh trong php?
Hướng dẫn how to draw a image in php? - làm thế nào để vẽ một hình ảnh trong php?

Kết xuất văn bản trên hình ảnh

PHP GD đi kèm với bốn chức năng khác nhau để cho phép bạn hiển thị nhiều ký tự hoặc chỉ một ký tự theo hướng ngang hoặc dọc. Các chức năng này là & nbsp; ________ 51,

ImagePolygon(image, points, number, color);
ImageFilledPolygon(image, points, number, color);
2,
ImagePolygon(image, points, number, color);
ImageFilledPolygon(image, points, number, color);
3 và
ImagePolygon(image, points, number, color);
ImageFilledPolygon(image, points, number, color);
4. Tất cả chúng đều chấp nhận sáu tham số giống nhau, vì vậy chúng tôi sẽ chỉ thảo luận về chức năng
ImagePolygon(image, points, number, color);
ImageFilledPolygon(image, points, number, color);
1 ở đây.

Hàm tham số

ImagePolygon(image, points, number, color);
ImageFilledPolygon(image, points, number, color);
6
ImagePolygon(image, points, number, color);
ImageFilledPolygon(image, points, number, color);
7 chỉ đơn giản là kích thước của văn bản được hiển thị. Nó chỉ chấp nhận các giá trị số nguyên từ 1 đến 5. Tham số
ImagePolygon(image, points, number, color);
ImageFilledPolygon(image, points, number, color);
8 là văn bản mà bạn muốn hiển thị. Nếu bạn chuyển một chuỗi đa nhân vật cho các hàm char, chỉ có ký tự đầu tiên sẽ được hiển thị trên hình ảnh. Các hàm
ImagePolygon(image, points, number, color);
ImageFilledPolygon(image, points, number, color);
2 và
ImagePolygon(image, points, number, color);
ImageFilledPolygon(image, points, number, color);
4 sẽ hiển thị văn bản theo chiều dọc từ dưới lên trên.

Khi nói đến văn bản kết xuất, bốn chức năng chúng tôi đã thảo luận ở trên là rất hạn chế. Bạn sẽ thấy rằng ngay cả giá trị kích thước phông chữ lớn nhất cũng quá nhỏ để sử dụng bình thường. Ngoài ra, văn bản chỉ có thể được viết theo chiều ngang và chiều dọc.

May mắn thay, GD cũng có chức năng

ImageArc(image, center_x, center_ y, width, height, start, end, color);
1 có thể hiển thị văn bản trong bất kỳ phông chữ nào bạn muốn. Tham số
ImageArc(image, center_x, center_ y, width, height, start, end, color);
2 được sử dụng để chỉ định đường dẫn đến phông chữ TrueType bạn muốn sử dụng để hiển thị văn bản. Các tham số
ImageArc(image, center_x, center_ y, width, height, start, end, color);
3 và
ImageArc(image, center_x, center_ y, width, height, start, end, color);
4 xác định vị trí bắt đầu của văn bản được hiển thị.

Ví dụ sau đây sử dụng tất cả các chức năng này để tạo ra một số hiệu ứng văn bản đẹp.

1

Như bạn có thể thấy, chúng tôi đã kết xuất cùng một văn bản với cùng một phông chữ ở các vị trí hơi khác nhau để tạo ra một số hiệu ứng như bóng văn bản cơ bản. Điều quan trọng cần ghi nhớ là văn bản được hiển thị bởi bất kỳ hàm văn bản nào sẽ ẩn hoàn toàn văn bản bên dưới nó trong trường hợp chồng chéo. Dưới đây là hình ảnh cuối cùng thu được sau khi chạy mã trên.

Hướng dẫn how to draw a image in php? - làm thế nào để vẽ một hình ảnh trong php?
Hướng dẫn how to draw a image in php? - làm thế nào để vẽ một hình ảnh trong php?
Hướng dẫn how to draw a image in php? - làm thế nào để vẽ một hình ảnh trong php?

Tạo ra các thiết kế và áp phích đơn giản

Chúng ta hãy sử dụng tất cả các kiến ​​thức mà chúng ta đã đạt được cho đến nay để tạo ra các áp phích hoặc hình ảnh đơn giản với sự pha trộn giữa văn bản và hình dạng. Tôi sẽ cố gắng tạo lại một cái gì đó tương tự như hình ảnh trong hướng dẫn thao tác hình ảnh PHP này nơi chúng tôi đã thay thế màu. Chúng tôi sẽ vẽ các vòng tròn đồng tâm để giữ cho các tính toán của chúng tôi đơn giản.

Một chức năng mới mà chúng tôi sẽ sử dụng trong phần này được gọi là

ImageArc(image, center_x, center_ y, width, height, start, end, color);
5. Về cơ bản, nó cung cấp cho chúng tôi hộp giới hạn của văn bản mà chúng tôi muốn viết bằng phông chữ TrueType. Chúng tôi sẽ sử dụng chức năng để mở rộng văn bản của chúng tôi để chiều rộng hoặc chiều cao của nó đạt đến một phần nhất định của hình ảnh. Sau đó, chúng ta có thể vẽ văn bản của mình trên hình ảnh bằng hàm
ImageArc(image, center_x, center_ y, width, height, start, end, color);
6.

2

Chúng tôi bắt đầu với kích thước phông chữ cơ sở là 20 điểm và sau đó tiếp tục tăng thêm 4 miễn là cả chiều rộng và chiều cao đều nằm trong giới hạn xác định. Khi chúng tôi đạt được kích thước phông chữ thích hợp, chúng tôi thoát khỏi vòng lặp và hiển thị văn bản trên hình ảnh bằng

ImageArc(image, center_x, center_ y, width, height, start, end, color);
6.

Hướng dẫn how to draw a image in php? - làm thế nào để vẽ một hình ảnh trong php?
Hướng dẫn how to draw a image in php? - làm thế nào để vẽ một hình ảnh trong php?
Hướng dẫn how to draw a image in php? - làm thế nào để vẽ một hình ảnh trong php?

Bây giờ chúng ta có thể bao gồm mã sau trước dòng cuối cùng, nơi chúng ta lưu hình ảnh để thêm các vòng tròn đồng tâm đầy của chúng ta vào các góc dưới bên trái và trên cùng bên phải của hình ảnh.

3As Bạn có thể thấy, có thể tạo các mẫu thú vị một cách dễ dàng bằng cách sử dụng một ít toán học và một số chức năng PHP GD tích hợp.
Hướng dẫn how to draw a image in php? - làm thế nào để vẽ một hình ảnh trong php?
Hướng dẫn how to draw a image in php? - làm thế nào để vẽ một hình ảnh trong php?
Hướng dẫn how to draw a image in php? - làm thế nào để vẽ một hình ảnh trong php?

As you can see, it is possible to create interesting patterns with ease using a little mathematics and some built-in PHP GD functions.

Suy nghĩ cuối cùng

Mục đích của hướng dẫn này là giúp bạn làm quen với các chức năng GD khác nhau để vẽ các hình dạng cơ bản từ đầu trong PHP. Với sự trợ giúp của một toán học nhỏ, bạn sẽ có thể sử dụng các chức năng này để tạo ra các hình dạng phức tạp hơn như đa giác thông thường, hình chữ nhật tròn, v.v.

PHP GD cũng có một vài chức năng rất hữu ích để hiển thị văn bản trên một hình ảnh. Việc sử dụng một phông chữ đẹp sẽ đảm bảo rằng văn bản được hiển thị không có vẻ kỳ lạ khi được đặt trên các hình ảnh thông thường được tải từ các đường dẫn tệp khác nhau.

Bạn đã tạo ra bất kỳ hiệu ứng văn bản ưa thích nào trong PHP? Hãy chia sẻ chúng với chúng tôi trên diễn đàn.

Bạn có thấy bài đăng này hữu ích?

Hướng dẫn how to draw a image in php? - làm thế nào để vẽ một hình ảnh trong php?

Freelancer, người hướng dẫn

Tôi là một nhà phát triển đầy đủ, người cũng thích viết các hướng dẫn. Sau khi thử một loạt những điều cho đến năm thứ hai của đại học, tôi quyết định làm việc về các kỹ năng phát triển web của mình. Bắt đầu chỉ với HTML và CSS, tôi tiếp tục tiến về phía trước và có được kinh nghiệm trong PHP, JavaScript và Python. Tôi thường dành thời gian rảnh của mình hoặc làm việc cho một số dự án phụ hoặc đi du lịch xung quanh.

Làm thế nào chúng ta có thể vẽ hình ảnh bằng PHP?

ImageSetPixel (hình ảnh, x, y, màu); Có hai hàm cho các dòng vẽ, ImageReline () và FispleDashEdline (): ImageLine (Image, Start_x, Start_ Y, End_x, End_ Y, Color); ImageDashEdline (hình ảnh, start_x, start_ y, end_x, end_ y, màu); There are two functions for drawing lines, ImageLine( ) and ImageDashedLine( ): ImageLine(image, start_x, start_ y, end_x, end_ y, color); ImageDashedLine(image, start_x, start_ y, end_x, end_ y, color);

Chúng ta có thể làm hình ảnh bằng PHP không?

PHP không giới hạn trong việc tạo chỉ đầu ra HTML.Nó cũng có thể được sử dụng để tạo và thao tác các tệp hình ảnh ở nhiều định dạng hình ảnh khác nhau, bao gồm GIF, PNG, JPEG, WBMP và XPM.Thậm chí thuận tiện hơn, PHP có thể xuất trực tiếp các luồng hình ảnh vào trình duyệt.It can also be used to create and manipulate image files in a variety of different image formats, including GIF , PNG , JPEG , WBMP , and XPM . Even more conveniently, PHP can output image streams directly to a browser.

Bước đầu tiên để tạo hình ảnh trong PHP là gì?

Tạo hình ảnh Điều đầu tiên mã thực hiện là gọi hàm ImageCreate () với kích thước của hình ảnh, cụ thể là chiều rộng và chiều cao của nó theo thứ tự đó.Hàm này trả về một định danh tài nguyên cho hình ảnh mà chúng tôi lưu trong $ my_img.Định danh là cần thiết cho tất cả các hoạt động của chúng tôi trên hình ảnh.call the imagecreate() function with the dimensions of the image, namely its width and height in that order. This function returns a resource identifier for the image which we save in $my_img . The identifier is needed for all our operations on the image.

Đồ họa PHP là gì?

Đồ họa là một trong những khía cạnh hấp dẫn nhất của PHP.Được trang bị một thư viện đồ họa GD mạnh mẽ, nó có thể tự động thao tác với hình ảnh.Nó có thể tạo các tệp GIF, JPEG và PNG.Sử dụng thư viện đồ họa GD cung cấp chương trình PHP với một lợi thế lớn khác.one of the most compelling aspects of PHP. Equipped with a powerful GD graphics library, it can dynamically manipulate images. It can create GIFs, JPEGs and PNG files. Use of GD graphics library provides PHP programming with another major advantage.