阅读量:0
在 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:
首先确保已安装了 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 库提供更好的压缩效果,但可能需要更多的计算资源。根据项目需求选择合适的库。