在 PHP 中,处理位图(如 JPEG、PNG 和 GIF)的常用方法是使用 GD 库或 ImageMagick
使用 GD 库:
a. 压缩 JPEG 图像:
function compress_jpeg($source, $destination, $quality) {
$image = imagecreatefromjpeg($source);
imagejpeg($image, $destination, $quality);
imagedestroy($image);
}
$source = 'input.jpg';
$destination = 'output.jpg';
$quality = 75; // 范围从 0(最差质量,最小文件大小)到 100(最佳质量,最大文件大小)
compress_jpeg($source, $destination, $quality);
b. 压缩 PNG 图像:
function compress_png($source, $destination, $quality) {
$image = imagecreatefrompng($source);
imagepng($image, $destination, $quality);
imagedestroy($image);
}
$source = 'input.png';
$destination = 'output.png';
$quality = 6; // 范围从 0(最差质量,最小文件大小)到 9(最佳质量,最大文件大小)
compress_png($source, $destination, $quality);
首先确保已安装了 ImageMagick 扩展。然后,可以使用以下方法进行压缩:
a. 压缩 JPEG 图像:
function compress_jpeg($source, $destination, $quality) {
$image = new Imagick($source);
$image->setImageCompression(Imagick::COMPRESSION_JPEG);
$image->setImageCompressionQuality($quality);
$image->writeImage($destination);
$image->destroy();
}
$source = 'input.jpg';
$destination = 'output.jpg';
$quality = 75; // 范围从 0(最差质量,最小文件大小)到 100(最佳质量,最大文件大小)
compress_jpeg($source, $destination, $quality);
b. 压缩 PNG 图像:
function compress_png($source, $destination, $quality) {
$image = new Imagick($source);
$image->setImageCompression(Imagick::COMPRESSION_LOSSLESSJPEG);
$image->setImageCompressionQuality($quality);
$image->writeImage($destination);
$image->destroy();
}
$source = 'input.png';
$destination = 'output.png';
$quality = 6; // 范围从 0(最差质量,最小文件大小)到 9(最佳质量,最大文件大小)
compress_png($source, $destination, $quality);
注意:ImageMagick 通常比 GD 库提供更好的压缩效果,但可能需要更多的计算资源。根据项目需求选择合适的库。