php实现图片处理
PHP 图片处理基础方法
GD 库是 PHP 内置的图像处理库,需确保 php.ini 中启用 extension=gd
检查 GD 库是否启用:
<?php
print_r(gd_info());
?>
创建画布与基本操作
新建空白画布(300x200 像素):
$image = imagecreatetruecolor(300, 200);
$bgColor = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bgColor);
绘制图形示例:
$red = imagecolorallocate($image, 255, 0, 0);
imagefilledrectangle($image, 50, 50, 250, 150, $red);
图片缩放与裁剪
等比例缩放图片:
$srcImage = imagecreatefromjpeg('input.jpg');
$newWidth = 200;
$newHeight = imagesy($srcImage) * ($newWidth / imagesx($srcImage));
$scaledImage = imagescale($srcImage, $newWidth, $newHeight);
精确裁剪区域:
$cropped = imagecrop($srcImage, ['x' => 100, 'y' => 50, 'width' => 200, 'height' => 150]);
图片滤镜效果
应用灰度滤镜:
imagefilter($image, IMG_FILTER_GRAYSCALE);
添加浮雕效果:

imagefilter($image, IMG_FILTER_EMBOSS);
文字水印添加
在图片上写入文字:
$textColor = imagecolorallocate($image, 0, 0, 0);
imagettftext($image, 20, 0, 50, 100, $textColor, 'arial.ttf', 'Watermark');
图片格式转换
将 PNG 转换为 JPG:
$pngImage = imagecreatefrompng('input.png');
imagejpeg($pngImage, 'output.jpg', 90);
imagedestroy($pngImage);
图片保存与输出
保存到文件:
imagejpeg($image, 'processed.jpg', 85);
直接输出到浏览器:

header('Content-Type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
使用 Imagick 扩展(更高级)
需安装 Imagick 扩展:
pecl install imagick
调整图片质量示例:
$imagick = new Imagick('input.jpg');
$imagick->setImageCompressionQuality(80);
$imagick->writeImage('output.jpg');
添加阴影效果:
$imagick->shadowImage(50, 3, 5, 5);
常见问题处理
处理内存不足:
ini_set('memory_limit', '256M');
解决方向错误(EXIF 修正):
function correctImageOrientation($filename) {
$exif = exif_read_data($filename);
if (!empty($exif['Orientation'])) {
$image = imagecreatefromjpeg($filename);
switch ($exif['Orientation']) {
case 3: $image = imagerotate($image, 180, 0); break;
case 6: $image = imagerotate($image, -90, 0); break;
case 8: $image = imagerotate($image, 90, 0); break;
}
imagejpeg($image, $filename, 90);
}
}






