php圖片壓縮gif圖,兼容正常其他圖格式。

使用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);

這個就是壓縮的圖片流程,有什么不懂的可以私信。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容