用php实现图片
使用PHP生成图片
PHP可以通过GD库或Imagick扩展来创建和处理图像。GD库是PHP内置的图像处理库,而Imagick提供了更强大的功能。
安装GD库或Imagick扩展后,可以开始创建图像。GD库通常默认启用,可以通过phpinfo()检查是否已安装。
创建空白图片
使用GD库创建一个空白图片并输出为PNG格式:

<?php
header("Content-Type: image/png");
$image = imagecreatetruecolor(400, 300);
$background = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $background);
imagepng($image);
imagedestroy($image);
?>
绘制图形和文本
在图片上绘制图形和添加文本:
<?php
header("Content-Type: image/png");
$image = imagecreatetruecolor(400, 300);
$white = imagecolorallocate($image, 255, 255, 255);
$red = imagecolorallocate($image, 255, 0, 0);
imagefill($image, 0, 0, $white);
imagerectangle($image, 50, 50, 350, 250, $red);
imagestring($image, 5, 150, 150, "Hello PHP", $red);
imagepng($image);
imagedestroy($image);
?>
处理现有图片
加载现有图片并添加水印:

<?php
header("Content-Type: image/jpeg");
$image = imagecreatefromjpeg("original.jpg");
$watermark = imagecolorallocate($image, 255, 255, 255);
imagestring($image, 5, 10, 10, "Watermark", $watermark);
imagejpeg($image);
imagedestroy($image);
?>
使用Imagick扩展
Imagick提供了更丰富的图像处理功能:
<?php
header("Content-Type: image/png");
$image = new Imagick();
$image->newImage(400, 300, new ImagickPixel('white'));
$draw = new ImagickDraw();
$draw->setFillColor('red');
$draw->rectangle(50, 50, 350, 250);
$draw->setFontSize(20);
$draw->annotation(150, 150, "Hello Imagick");
$image->drawImage($draw);
echo $image;
?>
图片滤镜应用
使用GD库应用滤镜效果:
<?php
header("Content-Type: image/jpeg");
$image = imagecreatefromjpeg("photo.jpg");
imagefilter($image, IMG_FILTER_GRAYSCALE);
imagefilter($image, IMG_FILTER_CONTRAST, -20);
imagejpeg($image);
imagedestroy($image);
?>
生成验证码图片
创建简单的验证码图片:
<?php
header("Content-Type: image/png");
$image = imagecreatetruecolor(100, 30);
$bg = imagecolorallocate($image, 200, 200, 200);
$textcolor = imagecolorallocate($image, 0, 0, 0);
imagefill($image, 0, 0, $bg);
$code = substr(md5(uniqid()), 0, 5);
imagestring($image, 5, 20, 8, $code, $textcolor);
imagepng($image);
imagedestroy($image);
?>
注意事项
确保服务器已安装GD库或Imagick扩展。输出图像前必须设置正确的Content-Type头。处理完图像后调用imagedestroy()释放内存。对于复杂图像操作,Imagick扩展通常比GD库更强大高效。






