Hướng dẫn how to draw images in php? - làm thế nào để vẽ 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 images in php? - làm thế nào để vẽ hình ảnh trong php?

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

Đồ 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.

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.

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 images in php? - làm thế nào để vẽ hình ảnh trong php?
Hướng dẫn how to draw images in php? - làm thế nào để vẽ hình ảnh trong php?
Hướng dẫn how to draw images in php? - làm thế nào để vẽ 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 images in php? - làm thế nào để vẽ hình ảnh trong php?
Hướng dẫn how to draw images in php? - làm thế nào để vẽ hình ảnh trong php?
Hướng dẫn how to draw images in php? - làm thế nào để vẽ 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 images in php? - làm thế nào để vẽ hình ảnh trong php?
Hướng dẫn how to draw images in php? - làm thế nào để vẽ hình ảnh trong php?
Hướng dẫn how to draw images in php? - làm thế nào để vẽ 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 images in php? - làm thế nào để vẽ hình ảnh trong php?
Hướng dẫn how to draw images in php? - làm thế nào để vẽ hình ảnh trong php?
Hướng dẫn how to draw images in php? - làm thế nào để vẽ 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 images in php? - làm thế nào để vẽ hình ảnh trong php?
Hướng dẫn how to draw images in php? - làm thế nào để vẽ hình ảnh trong php?
Hướng dẫn how to draw images in php? - làm thế nào để vẽ 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 images in php? - làm thế nào để vẽ hình ảnh trong php?
Hướng dẫn how to draw images in php? - làm thế nào để vẽ hình ảnh trong php?
Hướng dẫn how to draw images in php? - làm thế nào để vẽ 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 images in php? - làm thế nào để vẽ hình ảnh trong php?

Đồ 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.

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

Chúng ta có thể vẽ hình ảnh trong PHP không?

Bạn có thể vẽ các đa giác tùy ý với các hàm ImagePolygon () và ImageFillSpolygon (): ImagePolygon (hình ảnh, điểm, số, màu); ImageFillSpolygon (hình ảnh, điểm, số, màu); 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.: ImagePolygon(image, points, number, color); ImageFilledPolygon(image, points, number, color); Both functions take an array of points. This array has two integers (the x and y coordinates) for each vertex on the polygon.

Đồ 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.

Hàm ImageCreate () là một hàm sẵn có trong PHP được sử dụng để tạo một hình ảnh mới.Hàm này trả về hình ảnh trống của kích thước đã cho.Nói chung hàm ImageCreatetRueColor () được sử dụng thay vì hàm ImageCreate () vì hàm ImageCreatetRueColor () tạo ra hình ảnh chất lượng cao.imagecreate() function is an inbuilt function in PHP which is used to create a new image. This function returns the blank image of given size. In general imagecreatetruecolor() function is used instead of imagecreate() function because imagecreatetruecolor() function creates high quality images.

Làm thế nào chúng ta có thể chèn một hình ảnh vào một trang PHP?

Tạo biểu mẫu HTML..
.
.
.
Chọn hình ảnh để tải lên:.
.
.
.
.

Chọn hình ảnh để tải lên:.

Đồ họa PHP là gì?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.