PHP ImageMagick 怎样压缩图片

最近更新时间 2020-11-23 17:37:38

Imagick 是用 ImageMagic API 来创建和修改图像的PHP官方扩展。ImageMagick® 是用来创建,编辑,合并位图图像的一套组件。 它能够用于读取,转换,写入多种不同格式的图像。 包含 DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, 和 TIFF。

最新稳定版本为 3.4.4 2019年5月2日发布,最低要求:ImageMagick version 6.5.3-10+ and PHP 5.4.0+。

参考代码

// 根据图片地址,初始化 Imagick
$image = new Imagick($filePath);

// 去掉图片的所有配置和设置
$image->stripImage();

//设置图片压缩的类型,支持的 COMPRESSION 常量如下所示:
// Imagick::COMPRESSION_UNDEFINED
// Imagick::COMPRESSION_NO
// Imagick::COMPRESSION_BZIP
// Imagick::COMPRESSION_FAX
// Imagick::COMPRESSION_GROUP4
// Imagick::COMPRESSION_JPEG
// Imagick::COMPRESSION_JPEG2000
// Imagick::COMPRESSION_LOSSLESSJPEG
// Imagick::COMPRESSION_LZW
// Imagick::COMPRESSION_RLE
// Imagick::COMPRESSION_ZIP
// Imagick::COMPRESSION_DXT1
// Imagick::COMPRESSION_DXT3
// Imagick::COMPRESSION_DXT5
$image->setImageCompression(Imagick::COMPRESSION_JPEG);

//设置图片压缩的质量,整数[0-100]
//图片质量和大小成反比,一般 Web 图片建议 80 左右。 
$image->setImageCompressionQuality(80);

// 默认情况下压缩后图片为 jpg 格式,如果原图为 png 或 gif 需要设置图片格式,如下所示:

// 获取图片 Mime 类型
// 常用图片 MIME 类型:
// image/gif、image/jpeg、image/png、image/bmp、image/tiff
$miniType = $image->getImageMimeType();
if($miniType == 'image/png') {
  $image->setImageFormat('png');
} else if($miniType == 'image/gif') {
  $image->setImageFormat('gif');
} else {
  $image->setImageFormat('jpeg');
}

// 保存压缩图片,替换源文件
$image->writeImages($filePath, true);
rss_feed