1. 前言
随着互联网的发展,图片在我们日常生活中得到了越来越广泛的应用。然而,随着图片的不断积累,占用空间也越来越大,这给服务器的存储空间带来了很大的压力。因此,在保证图片质量不受影响的前提下,压缩图片文件大小成为当前解决该问题的有效方法之一。
本文将介绍如何借助PHP编写脚本批量压缩图片文件大小,实现快速、高效地减小存储空间的占用。
2. 准备工作
2.1 安装GD库
要使用PHP进行图片压缩,首先需要安装GD库。GD库是一个用PHP编写的图形库,可以处理各种常见的图片格式。在大多数PHP环境中,默认已经安装了GD库,不需要额外安装。如果您的PHP环境中没有安装GD库,您可以参考以下命令进行安装:
sudo apt-get install php-gd
2.2 创建测试文件夹
在本文中,我们将通过一个测试文件夹进行演示。因此,在开始之前,请先创建一个名为“test”的文件夹,并将测试图片放入其中。
mkdir test
cd test
# 将测试图片放入test文件夹中
3. 压缩单张图片
在了解如何批量压缩图片之前,我们先来看一下如何压缩单张图片。以下是通过PHP代码实现压缩单张图片的过程。
$filename = 'test.jpg';
$source = imagecreatefromjpeg($filename);
$width = imagesx($source);
$height = imagesy($source);
$quality = 75; // 图片压缩质量,范围1-100,数值越高质量越好
$image = imagecreatetruecolor($width, $height);
imagecopyresampled($image, $source, 0, 0, 0, 0, $width, $height, $width, $height);
imagejpeg($image, $filename, $quality);
imagedestroy($source);
imagedestroy($image);
以上代码通过imagecreatefromjpeg()函数从源图片中创建一个图像对象,使用imagesx()和imagesy()获取图片的宽度和高度,并设置压缩质量。然后,使用imagecreatetruecolor()函数创建一个新的真彩色图像,并使用imagecopyresampled()函数将原图缩放到指定大小,并使用imagejpeg()函数生成新的图片文件。
使用PHP执行以上代码,可以在test文件夹中生成质量设置为75的图片文件test.jpg。您可以根据实际需求,对quality设置不同的数值以得到不同质量的压缩结果。
4. 批量压缩图片
接下来,我们将讲解如何借助PHP批量压缩图片文件大小。下面是实现批量压缩图片的代码:
$dir = 'test';
$files = scandir($dir);
$quality = 75;
foreach ($files as $file) {
$source = "$dir/$file";
if (is_file($source)) {
$imageinfo = getimagesize($source);
if ($imageinfo['mime'] == 'image/jpeg') {
$image = imagecreatefromjpeg($source);
imagejpeg($image, $source, $quality);
imagedestroy($image);
} elseif ($imageinfo['mime'] == 'image/png') {
$image = imagecreatefrompng($source);
imagepng($image, $source, round(9 * $quality / 100));
imagedestroy($image);
} elseif ($imageinfo['mime'] == 'image/gif') {
$image = imagecreatefromgif($source);
imagegif($image, $source);
imagedestroy($image);
}
}
}
以上代码首先使用scandir()函数获取test文件夹中的所有文件,然后遍历文件列表,并使用getimagesize()函数获取图片信息。
使用判断条件判断图片类型,如果是JPEG格式,则使用imagecreatefromjpeg()函数创建图像资源对象,使用imagejpeg()函数生成新的图片文件;如果是PNG格式,则使用imagecreatefrompng()函数创建图像资源对象,使用imagepng()函数生成新的图片文件;如果是GIF格式,则使用imagecreatefromgif()函数创建图像资源对象,使用imagegif()函数生成新的图片文件。
在以上代码中,$quality为图片压缩质量,JPEG格式可设置quality值为1-100,PNG格式可设置quality值为0-9。
使用PHP执行以上代码,可以在test文件夹中对所有JPEG、PNG和GIF格式的图片进行压缩,并且不会影响原始图片的质量。
5. 结语
本文介绍了如何使用PHP编写脚本批量压缩图片文件大小,从而减小服务器存储空间的占用。通过以上方法,您可以快速、高效地将海量的图片文件进行处理,减轻服务器的压力。