在PHP项目开发中,图片上传功能非常普遍,很多时候我们需要对上传的图片尺寸做限制,比如要求图片宽度不能小于800像素,高度不能小于600像素,或者限制图片的最大宽高。下面介绍两种常用的PHP验证图片尺寸大小的方法,附带完整的代码示例。

方法一:使用getimagesize函数验证
getimagesize是PHP内置的函数,不需要依赖额外的扩展就可以使用,它可以获取图片的宽度、高度、类型等信息,非常适合用来做上传图片的尺寸校验。
函数说明
getimagesize函数接收一个图片路径作为参数,返回一个包含图片信息的数组,其中索引0是图片宽度,索引1是图片高度,索引2是图片类型的常量标识。
上传场景下的校验代码
以下是结合文件上传流程的尺寸验证示例:
<?php
// 假设上传的文件信息在$_FILES['upload_img']中
$uploadFile = $_FILES['upload_img'];
// 允许上传的图片类型
$allowTypes = ['image/jpeg', 'image/png', 'image/gif'];
// 限制的最小宽度和最小高度
$minWidth = 800;
$minHeight = 600;
// 先检查文件类型是否允许
if (!in_array($uploadFile['type'], $allowTypes)) {
die('不允许的文件类型');
}
// 获取图片尺寸信息
$imageInfo = getimagesize($uploadFile['tmp_name']);
if (!$imageInfo) {
die('无法获取图片信息,可能不是有效的图片文件');
}
$imgWidth = $imageInfo[0];
$imgHeight = $imageInfo[1];
// 校验尺寸
if ($imgWidth < $minWidth || $imgHeight < $minHeight) {
die('图片尺寸不符合要求,宽度不能小于'.$minWidth.'px,高度不能小于'.$minHeight.'px');
}
// 尺寸校验通过,后续处理上传逻辑
echo '图片尺寸校验通过,宽度:'.$imgWidth.'px,高度:'.$imgHeight.'px';
?>
方法二:使用GD库验证尺寸
如果服务器已经开启了GD库扩展,也可以通过创建图片资源的方式获取图片尺寸,这种方式还可以同时做图片的其他处理,比如压缩、裁剪等。
不同格式图片的创建函数
GD库针对不同图片格式提供了不同的创建函数:
- JPEG格式:
imagecreatefromjpeg - PNG格式:
imagecreatefrompng - GIF格式:
imagecreatefromgif
GD库尺寸校验代码
以下是使用GD库验证图片尺寸的示例:
<?php
$uploadFile = $_FILES['upload_img'];
$minWidth = 800;
$minHeight = 600;
// 根据文件后缀选择对应的创建函数
$fileExt = strtolower(pathinfo($uploadFile['name'], PATHINFO_EXTENSION));
$imgResource = null;
switch ($fileExt) {
case 'jpg':
case 'jpeg':
$imgResource = imagecreatefromjpeg($uploadFile['tmp_name']);
break;
case 'png':
$imgResource = imagecreatefrompng($uploadFile['tmp_name']);
break;
case 'gif':
$imgResource = imagecreatefromgif($uploadFile['tmp_name']);
break;
default:
die('不支持的图片格式');
}
if (!$imgResource) {
die('创建图片资源失败');
}
// 获取图片宽度和高度
$imgWidth = imagesx($imgResource);
$imgHeight = imagesy($imgResource);
// 校验尺寸
if ($imgWidth < $minWidth || $imgHeight < $minHeight) {
imagedestroy($imgResource); // 销毁图片资源释放内存
die('图片尺寸不符合要求,宽度不能小于'.$minWidth.'px,高度不能小于'.$minHeight.'px');
}
// 校验通过,销毁资源
imagedestroy($imgResource);
echo '图片尺寸校验通过,宽度:'.$imgWidth.'px,高度:'.$imgHeight.'px';
?>
两种方法的对比
| 对比项 | getimagesize方法 | GD库方法 |
|---|---|---|
| 依赖扩展 | 无,PHP内置 | 需要开启GD库扩展 |
| 性能 | 更高,只读取图片头信息 | 稍低,需要创建完整图片资源 |
| 额外功能 | 仅能获取尺寸和类型信息 | 可同时做图片处理操作 |
如果只是需要验证图片尺寸大小,推荐使用getimagesize方法,性能更好且不需要额外依赖。如果后续需要对图片做处理,那么使用GD库方法可以省去重复创建资源的步骤。
PHP图片上传尺寸验证getimagesizeimagecreatefromjpeg修改时间:2026-06-20 19:12:15