以下是使用 PHP 实现图片批量压缩的示例代码,这里借助了GD库来进行图片处理。示例代码假设要处理的图片都在同一个文件夹下(可根据实际需求调整路径等),并且是常见的图片格式(如jpg、png等),代码主要思路是遍历指定文件夹下的图片文件,然后逐个进行压缩处理。
<?php
// 定义图片所在文件夹路径
$imageFolder = 'your_image_folder_path';
// 定义压缩后图片保存的文件夹路径,可按需修改,需确保该文件夹有写入权限
$compressedFolder = 'compressed_images_folder_path';
// 压缩质量(取值范围0 - 100,数值越小质量越低、文件越小),可按需调整
$quality = 80;
// 检查指定的图片文件夹是否存在
if (!is_dir($imageFolder)) {
die("图片文件夹不存在");
}
// 检查压缩后图片保存的文件夹是否存在,不存在则创建
if (!is_dir($compressedFolder)) {
mkdir($compressedFolder, 0777, true);
}
// 获取图片文件夹下所有文件
$files = scandir($imageFolder);
foreach ($files as $file) {
// 跳过. 和.. 这两个特殊目录项
if ($file === '.' || $file === '..') {
continue;
}
$imagePath = $imageFolder. '/'. $file;
$info = getimagesize($imagePath);
if ($info === false) {
continue; // 如果不是有效的图片文件则跳过
}
// 根据图片类型创建对应的图像资源
switch ($info[2]) {
case IMAGETYPE_JPEG:
$image = imagecreatefromjpeg($imagePath);
break;
case IMAGETYPE_PNG:
$image = imagecreatefrompng($imagePath);
break;
case IMAGETYPE_GIF:
$image = imagecreatefromgif($imagePath);
break;
default:
continue; // 不支持的图片类型则跳过
}
// 获取图片原始宽度和高度
$width = imagesx($image);
$height = imagesy($image);
// 构建压缩后图片保存的路径
$compressedPath = $compressedFolder. '/'. $file;
// 进行图片压缩并保存(这里以JPEG格式保存为例,若原先是PNG等可按需调整保存格式及相关参数)
switch ($info[2]) {
case IMAGETYPE_JPEG:
imagejpeg($image, $compressedPath, $quality);
break;
case IMAGETYPE_PNG:
imagepng($image, $compressedPath, 9); // 对于PNG可调整压缩级别(0 - 9),这里示例用9
break;
case IMAGETYPE_GIF:
imagegif($image, $compressedPath);
break;
}
// 释放图像资源
imagedestroy($image);
}
echo "图片批量压缩完成";
?>
