PHP图像处理依赖GD库,需启用extension=gd并重启服务;通过imagecreatetruecolor创建画布,配合imagestring绘图,imagepng输出;使用imagecopyresampled实现等比缩放与居中裁剪,注意释放资源防内存溢出。

PHP图像处理主要依赖GD库,它内置在大多数PHP环境中,支持创建、编辑、缩放和裁剪图像。只要开启GD扩展,就能用几行代码实现常见的图片操作。
启用GD库
确保你的PHP环境已启用GD库。可以通过以下代码检查:
如果未启用,在php.ini中取消注释或添加:extension=gd,然后重启Web服务。
生成与输出图像
使用imagecreate()或imagecreatetruecolor()创建画布,再用函数绘制内容并输出。
立即学习“PHP免费学习笔记(深入)”;
示例:生成一张带文字的PNG图片
// 分配颜色 $bg = imagecolorallocate($im, 255, 255, 255); // 白色背景 $text_color = imagecolorallocate($im, 0, 0, 0); // 黑色文字// 填充背景 imagefill($im, 0, 0, $bg);
// 添加文本 imagestring($im, 5, 50, 40, 'Hello PHP!', $text_color);
// 输出图像(浏览器显示为PNG) header('Content-Type: image/png'); imagepng($im);
// 释放内存 imagedestroy($im); ?>
图像缩放
使用imagecopyresampled()可高质量缩放图像,保持清晰度。
步骤如下:
- 加载原图(如JPEG、PNG)
- 计算新尺寸(按比例避免变形)
- 创建目标图像资源
- 重采样复制到新图像
- 保存或输出
示例:将图片等比缩小到最大宽度300px
$ratio = $orig_h / $orig_w;
$new_w = $max_width;
$new_h = intval($max_width * $ratio);
$src_img = imagecreatefromjpeg($src_path);
$dst_img = imagecreatetruecolor($new_w, $new_h);
imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0,
$new_w, $new_h, $orig_w, $orig_h);
header('Content-Type: image/jpeg');
imagejpeg($dst_img, null, 90); // 质量90%
imagedestroy($src_img);
imagedestroy($dst_img);}
// 调用 resizeImage('photo.jpg', 300); ?>
图像裁剪
裁剪常用于头像生成或提取局部区域。关键在于设定源图的复制起点和目标大小。
例如:从中心裁剪一个200x200的正方形
// 计算裁剪起始点(居中)
$start_x = ($w > $h) ? ($w - $h) / 2 : 0;
$start_y = ($h > $w) ? ($h - $w) / 2 : 0;
$side = min($w, $h); // 取短边
$dst = imagecreatetruecolor($size, $size);
imagecopyresampled($dst, $src, 0, 0, $start_x, $start_y,
$size, $size, $side, $side);
header('Content-Type: image/jpeg');
imagejpeg($dst, null, 90);
imagedestroy($src);
imagedestroy($dst);}
cropCenter('photo.jpg', 200); ?>
基本上就这些。掌握imagecreate、imagecopyresampled和各类image输出函数,就能应对大部分图像处理需求。注意及时释放资源,避免内存溢出。处理用户上传图片时,记得验证格式和大小。不复杂但容易忽略细节。











