2026-05-22 13:36:55
PHP 通过内置的 GD 库提供了一系列图像处理函数,可实现调整大小、裁剪、格式转换及水印添加等功能。以下是具体实现方法及示例:
1. 启用 GD 库在服务器上确保 GD 库已启用:
<?phpphpinfo(); // 搜索 "GD" 确认是否启用?>若未启用,需在 php.ini 中取消注释 extension=gd 并重启服务器。
2. 图像处理核心函数载入图像根据文件类型选择对应函数:
$image = imagecreatefromjpeg('image.jpg'); // JPEG$image = imagecreatefrompng('image.png'); // PNG$image = imagecreatefromgif('image.gif'); // GIF调整图像大小使用 imagecopyresized() 调整尺寸:
$new_image = imagecreatetruecolor(200, 200); // 创建新画布imagecopyresized( $new_image, $image, 0, 0, 0, 0, // 目标/源坐标 200, 200, // 目标宽高 imagesx($image), imagesy($image) // 源宽高);imagejpeg($new_image, 'resized.jpg'); // 保存裁剪图像通过 imagecrop() 指定区域:
$cropped = imagecrop($image, [ 'x' => 100, 'y' => 100, // 起始坐标 'width' => 200, 'height' => 200 // 裁剪尺寸]);imagepng($cropped, 'cropped.png');格式转换使用输出函数保存为不同格式:
imagejpeg($image, 'converted.jpg'); // 转JPEGimagepng($image, 'converted.png'); // 转PNGimagegif($image, 'converted.gif'); // 转GIF添加水印将水印图像叠加到原图:
$watermark = imagecreatefrompng('watermark.png');imagecopy( $image, $watermark, 0, 0, // 目标坐标 0, 0, // 源坐标 imagesx($watermark), imagesy($watermark) // 水印尺寸);imagejpeg($image, 'watermarked.jpg');3. 实战案例:创建缩略图处理上传文件并生成缩略图:
if (isset($_FILES['image']['tmp_name'])) { // 载入上传的图像 $image = imagecreatefromjpeg($_FILES['image']['tmp_name']); // 创建缩略图画布 $thumb = imagecreatetruecolor(150, 150); // 调整大小并保存 imagecopyresized( $thumb, $image, 0, 0, 0, 0, 150, 150, imagesx($image), imagesy($image) ); imagejpeg($thumb, 'thumbnail.jpg'); // 释放内存 imagedestroy($image); imagedestroy($thumb);}4. 注意事项通过以上函数组合,PHP 可灵活实现图像处理需求。如需更复杂操作(如滤镜),可结合 imagefilter() 或第三方库(如 Imagick)。