VII.2. Tạo và vẽ ảnh (2)
Các hàm thường sử dụng
– resource imagecreate ( int x_size, int y_size ): Tạo ảnh với
kích thước x_size * y_size, ảnh ko phải truecolor
– imagecolorallocate ( resource image, int red, int green, int
blue ): Sử dụng để định nghĩa 1 màu sẽ xuất hiện trong ảnh.
Đối với ảnh sử dụng palette, lần gọi đầu tiên sẽ cho màu là
màu nền của ảnh
– resource imagecreatetruecolor ( int x_size, int y_size ):
Tạo ảnh truecolor
– bool imagejpeg ( resource image [, string filename [, int
quality]] )
– bool imagepng ( resource image [, string filename] )
– bool imagegif ( resource image [, string filename] )
14 trang |
Chia sẻ: thanhle95 | Lượt xem: 595 | Lượt tải: 1
Bạn đang xem nội dung tài liệu Bài giảng PHP - Chương 7: Hình ảnh - Nguyễn Phú Quảng, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
VII. Hình ảnh
VII.1. Yêu cầu phần mềm
VII.2. Tạo và vẽ ảnh
VII.3. Vẽ Text
VII.4. Co dãn ảnh
VII.1. Yêu cầu phần mềm
Với PHP bạn có thể sử dụng các hàm graphic để vẽ
ra các hình ảnh và lưu trữ dưới dạng file (GIF, PNG,
JPG)
Để thực hiện được chức năng này, bạn cần phải cài
đặt bộ thư viện GD ( )
Để biết thư viện GD đã được cài đặt hay chưa, có
thể sử dụng hàm phpinfo() hoặc hàm gd_info()
Đối với bộ PHP full (v5.0) có đầy đủ thư viện PEAR
đi kèm, để chạy GD bạn chỉ việc thiết lập trong file
php.ini: extension=php_gd2.dll
VII.2. Tạo và vẽ ảnh
<?php
$im = imagecreate(30, 30);
$red = imagecolorallocate($im, 0xff, 0x00, 0x00);
$blue = imagecolorallocate($im, 0x00,0x00,0xff);
$black = imagecolorallocate($im, 0x00, 0x00, 0x00);
imagefilledrectangle($im, 0, 0, 29, 29, $black);
imagefilledrectangle($im, 0,0,15,15,$red);
imagefilledrectangle($im, 15,15,29,29,$blue);
imagejpeg($im);
?>
Day la caro
<?php
$im = imagecreate(30, 30);
$red = imagecolorallocate($im, 0xff, 0x00, 0x00);
$blue = imagecolorallocate($im, 0x00,0x00,0xff);
$black = imagecolorallocate($im, 0x00, 0x00, 0x00);
imagefilledrectangle($im, 0, 0, 29, 29, $black);
imagefilledrectangle($im, 0,0,15,15,$red);
imagefilledrectangle($im, 15,15,29,29,$blue);
imagejpeg($im, "c:/test.jpg", 100);
?>
Day cung la caro:
VII.2. Tạo và vẽ ảnh (2)
Các hàm thường sử dụng
– resource imagecreate ( int x_size, int y_size ): Tạo ảnh với
kích thước x_size * y_size, ảnh ko phải truecolor
– imagecolorallocate ( resource image, int red, int green, int
blue ): Sử dụng để định nghĩa 1 màu sẽ xuất hiện trong ảnh.
Đối với ảnh sử dụng palette, lần gọi đầu tiên sẽ cho màu là
màu nền của ảnh
– resource imagecreatetruecolor ( int x_size, int y_size ):
Tạo ảnh truecolor
– bool imagejpeg ( resource image [, string filename [, int
quality]] )
– bool imagepng ( resource image [, string filename] )
– bool imagegif ( resource image [, string filename] )
VII.2. Tạo và vẽ ảnh (3)
ImageSetPixel(image, x, y, color);
ImageLine(image, start_x, start_ y, end_x, end_ y, color);
ImageDashedLine(image, start_x, start_ y, end_x, end_ y,
color);
ImageRectangle(image, tlx, tly, brx, bry, color);
ImageFilledRectangle(image, tlx, tly, brx, bry, color);
ImagePolygon(image, points, number, color);
ImageFilledPolygon(image, points, number, color);
ImageArc(image, center_x, center_ y, width, height, start, end,
color);
ImageFill(image, x, y, color);
ImageFillToBorder(image, x, y, border_color, color);
VII.3. Vẽ Text
<?php
$im = imagecreate(100,100);
$white = imagecolorallocate($im, 0xff, 0xff, 0xff);
$red = imagecolorallocate($im, 0xff, 0x00, 0x00);
imagestring($im, 1, 0, 0, "HUCE", $red);
imagestring($im, 2, 0, 10, "HUCE", $red);
imagestring($im, 3, 0, 20, "HUCE", $red);
imagestring($im, 4, 0, 30, "HUCE", $red);
imagestring($im, 5, 0, 45, "HUCE", $red);
imagestringup($im, 5, 50, 99, "University", $red);
imagegif($im);
?>
VII.3. Vẽ Text (2)
<?php
$im = imagecreate(100,100);
$white = imagecolorallocate($im, 0xff, 0xff, 0xff);
$red = imagecolorallocate($im, 0xff, 0x00, 0x00);
$blue = imagecolorallocate($im, 0x00, 0x00, 0xff);
imagettftext($im, 8, 30, 10, 100, $red,
"Times", "HUCE - 46pm1");
imagettftext($im, 10, -30, 10, 10,$blue,
"Arialni","HUCE- 46pm1");
imagegif($im);
?>
VII.4. Co dãn ảnh
<?php
$im = imagecreate(100,100);
$white = imagecolorallocate($im, 0xff, 0xff, 0xff);
$red = imagecolorallocate($im, 0xff, 0x00, 0x00);
$blue = imagecolorallocate($im, 0x00, 0x00, 0xff);
imagettftext($im, 8, 30, 10, 100, $red, "Times", "HUCE - 46pm1");
imagettftext($im, 10, -30, 10, 10, $blue, "Arialni", "HUCE - 46pm1");
$im2 = imagecreate(200, 200);
//imagecopyresized($im2, $im, 0, 0, 0, 0, 200, 200, 100, 100);
imagecopyresampled($im2, $im, 0, 0, 0, 0, 200, 200, 100, 100);
imagegif($im2);
?>
VII.5. Màu sắc
VII.5.1. True color & color index
VII.5.2. Kênh alpha
VII.5.1. True color & color index
Ảnh của bạn được tạo bởi các hàm imagecreate() – tạo ảnh sử
dụng colorindex trên palette và imagecreatetruecolor () – tạo
ảnh truecolor (24bit/pixel)
Từ GD2.0 trở lên, ta có thể làm việc với kênh alpha (xem phần
sau)
Để lấy màu của điểm ảnh
– $color = ImageColorAt(image, x, y);
– $values = ImageColorsForIndex(image, index);
Với ảnh truecolor, cấu trúc màu gồm: 7bit alpha, 8bit Red, 8bit
Green, 8bit Blue (từ trái qua phải). Có thể sử dụng công thức
sau
– $a = ($col & 0x7F000000) >> 24;
$r = ($col & 0x00FF0000) >> 16;
$g = ($col & 0x0000FF00) >> 8;
$b = ($col & 0x000000FF);
VII.5.2. Kênh alpha
Kênh alpha trong GD chỉ gồm 7bit (giá trị từ 0 đến 127)
Để sử dụng kênh alpha sử dụng các hàm
– ImageColorResolveAlpha()
– ImageAlphaBlending()
<?php
$im = ImageCreateTrueColor(150,150);
$white = ImageColorAllocate($im,255,255,255);
ImageAlphaBlending($im, true);
ImageFilledRectangle($im,0,0,150,150,$white);
$red = ImageColorResolveAlpha($im,255,50,0,63);
ImageFilledEllipse($im,75,75,80,50,$red);
$gray = ImageColorResolveAlpha($im,70,70,70,63);
ImageAlphaBlending($im, true);
ImageFilledRectangle($im,60,60,120,120,$gray);
header('Content-Type: image/png');
ImagePNG($im);
?>
IX. XML
IX.1. Tạo văn bản XML
IX.2. Đọc XML
IX.1. Tạo văn bản XML
Cách đơn giản nhất để tạo văn bản XML là
đặt lại header của trang PHP
– header('Content-Type: text/xml');
Sau đó đưa thông tin ra browser bằng các
hàm echo, print... như bình thường
IX.2. Đọc XML
<?php
function start_element($inParser, $inName, &$inAttributes)
{
var_dump($inName);
var_dump($inAttributes);
}
function end_element($inParser, $inName) {
var_dump($inName);
}
$xml = xml_parser_create();
xml_set_element_handler($xml, "start_element",
"end_element");
xml_parse($xml, "<row name='row1'
atr='attribute1'/>");
?>