使用php進行等比壓縮gif圖片,壓縮完畢會還是動圖。
安裝:Mac電腦
第一步:安裝:brew install ImageMagick
第二步:安裝:sudo pecl install imagick
- 在安裝imagick的時候會有一個提示下面這個:
Please provide the prefix of [ImageMagick] installation [autodetect] :
這里輸入你的:ImageMagick 安裝路徑例如:/usr/local/opt/imagemagick下,我的是在這個下面。
- 如果安裝提示:Please reinstall the pkg-config distribution 那么你需要安裝這個:
brew install pkg-config
接下來都安裝完會有一行:Successful的顯示。
安裝完畢后會自動給你添加到php.ini文件里面一個擴展:
extension="imagick.so"
完事重啟php
//重啟命令-根據(jù)自己系統(tǒng)來。
brew services restart php
//查看擴展命令
php -m
完事開始代碼塊:
use Imagick;
public function gif($inputFile,$outputFile)
{
// 定義壓縮級別(默認值為75)
$quality = 70;
try {
// 創(chuàng)建一個新的 Imagick 對象
$imagick = new Imagick();
// 讀取 GIF 文件
$imagick->readImage($inputFile);
// 設(shè)置壓縮質(zhì)量(0-100)
$imagick->setImageCompressionQuality($quality);
// 獲取所有幀
$imagick = $imagick->coalesceImages();
// 保持動圖效果并進行壓縮
$imagick = $imagick->coalesceImages();
foreach ($imagick as $frame) {
// 重新設(shè)置大小-有兩個,我需要很小,所以選擇下面。
// $frame->resizeImage(80, 80, Imagick::FILTER_LANCZOS, 1);
// 重新設(shè)置大小
$frame->scaleImage(80, 80);
// 設(shè)置背景顏色
$frame->setImageBackgroundColor('white');
// 量化圖像的顏色表
$frame->quantizeImage(256, Imagick::COLORSPACE_RGB, 0, false, false);
// 設(shè)置壓縮質(zhì)量
$frame->setImageCompressionQuality($quality);
}
$imagick = $imagick->deconstructImages();
// 保存壓縮后的GIF
$imagick->writeImages($outputFile, true);
return response()->download($outputFile)->deleteFileAfterSend(true);
} catch (\Exception $e) {
return response()->json(['error' => $e->getMessage()], 500);
}
}
//調(diào)用
$filePath = '你圖片的路徑';
$thumbnailPath = "壓縮后的圖片路徑";
$this->giftt($filePath,$thumbnailPath);
這個就是壓縮的圖片流程,有什么不懂的可以私信。