PHP图像处理:GD和Imagick库概述
图像处理是Web开发中的常见任务之一。PHP有两个主要的图形处理库:GD(内置)和Imagick(ImageMagick的封装)。本文将介绍它们的功能、安装和实际示例。
GD库
GD是PHP的标准扩展,大多数主机都支持。它允许创建、修改和保存JPEG、PNG、GIF、WEBP格式的图像。
安装
在Ubuntu/Debian上:
sudo apt install php-gdsudo systemctl restart apache2在Windows上——取消php.ini中extension=gd行的注释。
GD的主要函数
imagecreatefromjpeg()、imagecreatefrompng()— 加载图像imagesx()、imagesy()— 获取宽度和高度imagecopyresampled()— 带重采样的缩放imagefilter()— 应用滤镜(模糊、负片)imagettftext()— 使用TrueType字体添加文本imagejpeg()、imagepng()— 保存结果
示例1:调整图像大小
<?php$src = 'photo.jpg';$dest = 'thumb.jpg';$newWidth = 300;
// 加载原始图像$img = imagecreatefromjpeg($src);$width = imagesx($img);$height = imagesy($img);
// 按比例计算新高度$newHeight = intval($height * $newWidth / $width);
// 创建新图像$thumb = imagecreatetruecolor($newWidth, $newHeight);imagecopyresampled($thumb, $img, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
// 保存imagejpeg($thumb, $dest, 85);imagedestroy($img);imagedestroy($thumb);echo "完成: $dest";?>示例2:添加水印
<?php$mainImg = imagecreatefromjpeg('background.jpg');$watermark = imagecreatefrompng('logo.png');
// 获取尺寸$mW = imagesx($mainImg);$mH = imagesy($mainImg);$wW = imagesx($watermark);$wH = imagesy($watermark);
// 位置——右下角,边距10px$dstX = $mW - $wW - 10;$dstY = $mH - $wH - 10;
// 复制带透明度的水印imagecopy($mainImg, $watermark, $dstX, $dstY, 0, 0, $wW, $wH);
// 保存imagepng($mainImg, 'result.png');imagedestroy($mainImg);imagedestroy($watermark);?>Imagick库
Imagick是强大工具ImageMagick的面向对象封装。支持超过200种格式、复杂变换、PDF处理、动画和色彩配置文件。
安装
sudo apt install imagemagick php-imagicksudo systemctl restart apache2检查安装:
<?php phpinfo(); ?>找到imagick部分。
主要类和方法
Imagick— 图像处理的主要类readImage()— 加载文件resizeImage()— 调整大小cropImage()— 裁剪compositeImage()— 图像叠加blurImage()— 模糊setImageFormat()— 格式转换
示例3:缩放和裁剪
<?php$image = new Imagick('photo.jpg');
// 缩放到800x600,保持比例$image->resizeImage(800, 600, Imagick::FILTER_LANCZOS, 1, true);
// 裁剪中央400x400区域$width = $image->getImageWidth();$height = $image->getImageHeight();$x = ($width - 400) / 2;$y