PHP GD 庫(kù)是一種非常強(qiáng)大的圖形處理庫(kù),它允許 PHP 開(kāi)發(fā)人員輕松地在 PHP 程序中創(chuàng)建和操作圖像。GD 庫(kù)支持廣泛的圖像格式和操作,包括畫(huà)線、畫(huà)矩形、畫(huà)圓、添加文字、縮放、裁剪和旋轉(zhuǎn)等功能。
以創(chuàng)建縮略圖為例,GD 庫(kù)可用于縮放和裁剪圖像以創(chuàng)建優(yōu)化的縮略圖。下面是使用 GD 庫(kù)創(chuàng)建縮略圖的示例代碼:
<?php
$source_image = 'image.jpg';
$destination_image = 'thumbnail.jpg';
$quality = 90;
$new_width = 200;
$new_height = 150;
$image_info = getimagesize($source_image);
$source_width = $image_info[0];
$source_height = $image_info[1];
$source_ratio = $source_width / $source_height;
$new_ratio = $new_width / $new_height;
if ($new_ratio >$source_ratio) {
$new_width = $new_height * $source_ratio;
} else {
$new_height = $new_width / $source_ratio;
}
$source_x = ($source_width - $new_width) / 2;
$source_y = ($source_height - $new_height) / 2;
$source = imagecreatefromjpeg($source_image);
$destination = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($destination, $source, 0, 0, $source_x, $source_y, $new_width, $new_height, $new_width, $new_height);
imagejpeg($destination, $destination_image, $quality);
?>
除了創(chuàng)建縮略圖外,GD 庫(kù)還可以用于創(chuàng)建驗(yàn)證碼圖像、處理上傳的圖像文件、生成動(dòng)態(tài)圖像和圖形處理等。下面是 GD 庫(kù)生成簡(jiǎn)單隨機(jī)驗(yàn)證碼的示例代碼:
<?php
session_start();
$code = substr(md5(uniqid(mt_rand(), true)),0,4);
$_SESSION['captcha'] = $code;
$image = imagecreatetruecolor(100, 30);
$background_color = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $background_color);
$text_color = imagecolorallocate($image, 0, 0, 0);
imagettftext($image, 20, 0, 10, 25, $text_color, 'arial.ttf', $code);
header('Content-type: image/png');
imagepng($image);
?>
除了以上示例之外,GD 庫(kù)還可以用于繪制折線圖、柱形圖、餅圖、地圖等。下面是 GD 庫(kù)創(chuàng)建柱狀圖的示例代碼:
<?php
$data = array(40, 60, 80, 100, 120);
$width = 200;
$height = 150;
$image = imagecreatetruecolor($width, $height);
$background_color = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $background_color);
$bar_color = imagecolorallocate($image, 100, 100, 100);
$spacing = 20;
$bar_width = ($width - ($spacing * (count($data) + 1))) / count($data);
$x = $spacing;
foreach ($data as $value) {
$bar_height = ($value / max($data)) * ($height - 20);
imagefilledrectangle($image, $x, $height - $bar_height - 10, $x + $bar_width, $height - 10, $bar_color);
$x += $bar_width + $spacing;
}
header('Content-type: image/png');
imagepng($image);
?>
總的來(lái)說(shuō),PHP GD庫(kù)是一個(gè)非常實(shí)用的庫(kù),它可以用來(lái)處理圖像、生成各種圖形、創(chuàng)建驗(yàn)證碼、動(dòng)態(tài)生成圖片等。對(duì)于需要在 PHP 程序中處理圖像和圖形的開(kāi)發(fā)人員來(lái)說(shuō),GD 庫(kù)是一個(gè)不可或缺的工具。