要使用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 中文站