要使用PHP批量处理图片的尺寸,可以使用GD库或ImageMagick库。下面是使用GD库的示例代码:
<?php
// 设置要处理的图片目录
$dir = 'path/to/images/';
// 设置目标尺寸
$width = 200;
$height = 200;
// 获取目录中的所有图片文件
$files = glob($dir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
// 遍历处理每个图片
foreach ($files as $file) {
// 获取图片信息
$info = getimagesize($file);
$mime = $info['mime'];
// 根据图片类型创建对应的图像资源
switch ($mime) {
case 'image/jpeg':
$image = imagecreatefromjpeg($file);
break;
case 'image/png':
$image = imagecreatefrompng($file);
break;
case 'image/gif':
$image = imagecreatefromgif($file);
break;
default:
continue; // 跳过不支持的图片类型
}
// 创建目标尺寸的空白图像
$newImage = imagecreatetruecolor($width, $height);
// 调整图片尺寸并保持原始比例
$srcWidth = $info[0];
$srcHeight = $info[1];
$srcRatio = $srcWidth / $srcHeight;
$dstRatio = $width / $height;
if ($srcRatio > $dstRatio) {
$newWidth = $width;
$newHeight = $width / $srcRatio;
} else {
$newWidth = $height * $srcRatio;
$newHeight = $height;
}
$dstX = ($width - $newWidth) / 2;
$dstY = ($height - $newHeight) / 2;
// 缩放图片
imagecopyresampled($newImage, $image, $dstX, $dstY, 0, 0, $newWidth, $newHeight, $srcWidth, $srcHeight);
// 保存处理后的图片
$newFile = $dir . 'resized/' . basename($file);
switch ($mime) {
case 'image/jpeg':
imagejpeg($newImage, $newFile);
break;
case 'image/png':
imagepng($newImage, $newFile);
break;
case 'image/gif':
imagegif($newImage, $newFile);
break;
}
// 释放资源
imagedestroy($image);
imagedestroy($newImage);
}
// 输出处理完成的消息
echo '图片处理完成!';
?>
上述代码将指定目录中的所有图片按照设定的尺寸进行缩放,并保存到resized
子目录中。你可以根据自己的需求修改目录路径、目标尺寸以及保存位置等参数。
上一篇:如何利用PHP开发图片滤镜功能
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站