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