Cú pháp để tạo một hình ảnh trong php và gán màu cho hình ảnh là gì?

Để giới thiệu cho bạn khái niệm làm việc với hình ảnh trong PHP, hãy xem xét kỹ thuật chung được sử dụng khi viết kịch bản bằng thư viện đồ họa GD. Quá trình này có thể khái quát thành các bước sau

Tạo một hình ảnh "canvas" trong bộ nhớ bằng cách tạo một hình ảnh mới hoặc bằng cách tải một hình ảnh hiện có

Phân bổ màu sắc được sử dụng trong hình ảnh (nếu cần)

Thực hiện bất kỳ bản vẽ hoặc thao tác hình ảnh nào khác cần thiết trên canvas

Lưu canvas vào một tệp ở định dạng hình ảnh được hỗ trợ hoặc truyền trực tuyến hình ảnh trong thời gian chạy tới trình duyệt

Phá hủy canvas không cần thiết trong bộ nhớ

Với mục đích của chương này, nói chung tôi sẽ tạo các khung vẽ mới cho các ví dụ của mình bằng cách sử dụng hàm imagecreate() của PHP. Cú pháp của hàm này như sau

imagecreate($width, $height);

Các tham số $width và $height là các số nguyên chỉ định chiều rộng và chiều cao của canvas cần tạo theo pixel. Như với tất cả các hàm tạo canvas trong bộ nhớ, hàm này trả về tài nguyên đại diện cho canvas hoặc trả về false nếu lỗi. Tài nguyên này là phương tiện mà PHP xác định canvas;

Canvas hình ảnh là nền tảng của hầu hết các chức năng được cung cấp bởi tiện ích mở rộng GD. Như bạn sẽ thấy ngay sau đây, canvas hình ảnh không phải lúc nào cũng được tạo từ đầu mà có thể được tạo từ các hình ảnh đã có sẵn

Sau khi một khung vẽ mới được tạo, nó vẫn chưa được coi là một hình ảnh "hợp lệ" thuộc bất kỳ loại nào, đơn giản vì nó không có bất kỳ màu nào được liên kết với nó trong bảng màu của nó. Bởi vì ngay cả hình ảnh bảng màu đơn giản nhất cũng có ít nhất một màu, trước khi bạn có thể hiển thị ngay cả một hình ảnh đơn màu đơn giản, bạn phải phân bổ màu đó trong bảng màu của canvas. Điều này thường được thực hiện bằng cách sử dụng hàm imagecolorallocate() với cú pháp sau

imagecolorallocate($img_r, $red, $green, $blue);

$img_r là tài nguyên đại diện cho khung vẽ để phân bổ màu, trong khi $red, $green và $blue là các số nguyên trong khoảng từ 0 đến 255 (hoặc 0x0 đến 0xFF theo hệ thập lục phân) cho mỗi màu. Khi được thực thi, hàm này cố gắng phân bổ một màu mới trong bảng màu với các giá trị đỏ, lục, lam (RGB) đã chỉ định. Nếu phân bổ thành công, hàm trả về một chỉ số nguyên đại diện cho vị trí của màu trong bảng màu hoặc 1 nếu phân bổ không thành công

Như bạn sẽ thấy, có nhiều cách phân bổ màu sắc hơn là hàm imagecolorallocate(). Nhiều chức năng có sẵn có thể giúp bạn tận dụng tốt nhất bảng màu của mình;

Điều quan trọng cần lưu ý là khi bạn tạo một hình ảnh mới, màu đầu tiên được phân bổ cho bảng màu sẽ tự động được gán cho toàn bộ hình ảnh làm màu nền. Do đó, thứ tự mà bạn phân bổ màu sắc cho bảng màu của mình có một mức độ quan trọng nhất định.

Một cách khác để tạo ảnh dựa trên bảng màu là tạo ảnh có màu thật bằng cách sử dụng hàm imagecreatetruecolor(). Chức năng này hoạt động giống hệt với đối tác imagecreate() của nó, với sự khác biệt rõ ràng là khung vẽ mà nó tạo ra không dựa trên bảng màu gồm 256 màu. Cú pháp cho chức năng này giống với cú pháp được tìm thấy cho imagecreate() như được hiển thị bên dưới

imagecreatetruecolor($width, $height);

$width và $height đại diện cho chiều rộng và chiều cao của canvas cần tạo (tính bằng pixel). Khi bạn làm việc với các hình ảnh có màu sắc trung thực, điều quan trọng cần lưu ý là không cần phân bổ màu nền cho bảng màu, như được yêu cầu với imagecreate(). Thay vào đó, tất cả các hình ảnh có màu sắc trung thực được tạo tự động với màu nền là màu đen

Mặc dù chúng tôi hầu như không tìm hiểu sơ qua về việc tạo hình ảnh bằng tiện ích mở rộng GD, nhưng các chức năng mà bạn đã được giới thiệu cho đến nay cung cấp tất cả những gì cần thiết để tạo một hình ảnh rất đơn giản (và nhàm chán) trong bộ nhớ, có thể được trình bày hoặc lưu lại . Điều này được thực hiện bằng cách sử dụng một trong các chức năng xuất hình ảnh có sẵn cho bạn. Vì mục đích của chương này, tôi đã chọn sử dụng định dạng PNG cho tất cả các hình ảnh của mình; . Cú pháp của hàm này như sau

imagepng($img_r [, $filename]);

$img_r đại diện cho tài nguyên hình ảnh nên được sử dụng và tham số $filename tùy chọn là tên tệp để ghi hình ảnh vào. Nếu không cung cấp tên tệp, hàm imagepng() sẽ gửi các tiêu đề thích hợp và xuất hình ảnh trực tiếp tới trình duyệt. Ví dụ: để tạo tập lệnh hiển thị hình ảnh đơn giản bằng một màu duy nhất (màu đỏ), có thể sử dụng cách sau


Mặc dù tôi chỉ thảo luận chính thức về hàm imagepng() để xuất hình ảnh, nhưng tất cả các hàm sau đây đều có sẵn để xuất hình ảnh ở các định dạng khác (mỗi hàm có cú pháp chức năng tương tự như hàm imagepng())

image2wbmp() Xuất ảnh ở định dạng WBMP

imagejpeg() Xuất ảnh ở định dạng JPEG

imagewbmp() Xuất ảnh ở định dạng WBMP

imagegd() Xuất hình ảnh ở định dạng GD gốc

imagegd2() Xuất hình ảnh ở định dạng GD2 gốc

Mặc dù các tham số thứ nhất và thứ hai của mỗi hàm trước giống hệt với hàm imagepng(), nhưng chúng đều có các tham số tùy chọn bổ sung có thể được sử dụng nếu muốn. Nếu bạn muốn biết chi tiết về các chức năng này, hãy tham khảo hướng dẫn sử dụng PHP để biết thêm thông tin

Khi được thực thi, tập lệnh đơn giản này hiển thị một hình ảnh trống với màu nền là 0xFF0000 (đỏ) có kích thước 200 x 200 pixel. Nếu chúng tôi muốn lưu hình ảnh này vào hệ thống tệp, tham số thứ hai $filename có thể đã được cung cấp cho hàm imagepng(), cung cấp tên tệp để ghi hình ảnh PNG vào

Truy xuất thông tin hình ảnh

Bây giờ bạn đã có phần giới thiệu thích hợp về cách tạo canvas hình ảnh, chúng ta hãy xem các loại chức năng có thể được sử dụng để thu thập thông tin về các canvas đó (và do đó là hình ảnh mà chúng đại diện). Hàm đầu tiên trong số này là các hàm imagesx() và imagey(), lần lượt trả về chiều rộng và chiều cao (tính bằng pixel) của một tài nguyên hình ảnh nhất định. Cú pháp của các hàm này như sau

imagesx($img_r);
imagesy($img_r):

$img_r là tài nguyên hình ảnh. Mặc dù tôi sẽ không sử dụng nhiều các chức năng này khi bắt đầu chương này (vì kích thước của canvas thường sẽ được biết sớm), khi tôi bắt đầu làm việc với các hình ảnh được tải từ hệ thống tệp, các chức năng này trở nên khá quan trọng.

Để biết phương pháp truy xuất kích thước hình ảnh không phải GD, hãy xem hàm getimagesize() trong phần ""

Như bạn sẽ thấy ở phần sau của chương này, một thông tin quan trọng khác cần có về một hình ảnh được tải từ hệ thống tệp là bản chất của bảng màu của nó. Vì một số thao tác nhất định được thực hiện tốt nhất trên hình ảnh có màu sắc trung thực, tiện ích mở rộng GD cung cấp hàm imageistruecolor() với cú pháp sau

imageistruecolor($img_r);

$img_r là tài nguyên hình ảnh. Khi được thực thi, hàm này sẽ trả về giá trị Boolean true nếu tài nguyên hình ảnh được cung cấp có màu thật, ngược lại là false

Một hàm cực kỳ hữu ích khác do tiện ích mở rộng GD cung cấp là hàm gd_info(). Vì tiện ích mở rộng GD phụ thuộc vào rất nhiều thư viện bên ngoài khác nhau nên các định dạng tệp đồ họa, định dạng phông chữ, v.v có sẵn có thể thay đổi đáng kể từ phiên bản PHP này sang phiên bản tiếp theo. Để giúp tập lệnh của bạn xác định khả năng của tiện ích mở rộng GD đang được sử dụng, chức năng này được cung cấp. Cú pháp của hàm này như sau

gd_info();

Hàm gd_info() khác với hàm phpinfo() ở chỗ nó không xuất trực tiếp bất kỳ thứ gì từ trình duyệt. Thay vào đó, nó được trả về dưới dạng giá trị trả về.

Khi được thực thi, hàm này sẽ trả về một mảng kết hợp mô tả các khả năng của tiện ích mở rộng GD đang được sử dụng. Thông tin có sẵn trong mảng này và ý nghĩa của nó có thể được tìm thấy trong bảng sau

Khóa mảng

Sự miêu tả

Phiên bản GD

Phiên bản GD đang được sử dụng. (chuỗi)

Hỗ trợ FreeType

Boolean cho biết FreeType có được bật hay không

Liên kết FreeType

Một chuỗi mô tả cách FreeType được liên kết với PHP. Các giá trị có thể có với freetype, với thư viện TTF hoặc với thư viện không xác định

Hỗ trợ T1Lib

Boolean cho biết liệu T1LIB (Phông chữ PostScript) có được bật hay không

Hỗ trợ Đọc GIF

Boolean cho biết liệu GD có thể đọc tệp GIF hay không

Hỗ trợ Tạo GIF

Boolean cho biết liệu GD có thể tạo tệp GIF hay không

Hỗ trợ JPG

Boolean cho biết JPEG có được hỗ trợ hay không

Hỗ trợ PNG

Boolean cho biết hình ảnh PNG có được hỗ trợ hay không

Hỗ trợ WBMP

Boolean cho biết hình ảnh WBMP có được hỗ trợ hay không

Hỗ trợ XBM

Boolean cho biết hình ảnh XBMP có được hỗ trợ hay không

Thông tin này có thể được tập lệnh của bạn sử dụng để xác định xem tập lệnh có tương thích với các khả năng của tiện ích mở rộng GD hay không hoặc liệu tập lệnh đó có cho phép tập lệnh của bạn khắc phục những điểm không tương thích đó hay không

Có thể tìm thấy một phương pháp khác để xác định khả năng của tiện ích mở rộng GD trong hàm imagetypes(). Nếu bạn chỉ quan tâm đến khả năng của PHP để làm việc với một loại hình ảnh cụ thể, chức năng này là một lựa chọn tốt hơn gd_info(). Cú pháp của hàm này như sau

________số 8

Khi được thực thi, hàm này trả về một trường bit được tạo bằng cách sử dụng như sau. IMG_GIF. IMG_JPG. IMG_PNG. IMG_WBMP (mỗi hằng số là bitwise hoặc cùng nhau). Để sử dụng thông tin này chẳng hạn, để kiểm tra xem JPEG có được hỗ trợ hay không, chỉ cần thao tác bit và hằng số mong muốn với kết quả của hàm

Cú pháp để tạo một hình ảnh trong PHP là gì?

Hàm imagecreate() là một hàm có sẵn trong PHP dùng để tạo một hình ảnh mới. Hàm này trả về hình ảnh trống có kích thước đã cho. Nói chung, hàm imagecreatetruecolor() được sử dụng thay cho hàm imagecreate() vì hàm imagecreatetruecolor() tạo ra hình ảnh chất lượng cao.

Làm cách nào để thêm màu vào hình ảnh trong PHP?

tiêu đề php ('Loại nội dung. hình ảnh/gif');

Làm cách nào để tô màu trong PHP?

PHP. Hàm imagefill() . Hàm imagefill() là một hàm có sẵn trong PHP được sử dụng để lấp đầy hình ảnh với màu đã cho. Hàm này thực hiện lấp đầy bắt đầu từ tọa độ đã cho (trên cùng bên trái là 0, 0) với màu đã cho trong ảnh.

Câu lệnh nào được sử dụng để đặt màu nền của hình ảnh thành màu đen trong PHP?