如何使用PHP批量压缩图片文件大小

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编写脚本批量压缩图片文件大小,从而减小服务器存储空间的占用。通过以上方法,您可以快速、高效地将海量的图片文件进行处理,减轻服务器的压力。

后端开发标签