centos下 將(jgp、png)圖片轉換成webp格式


    由於項目要求需要將jpg、png類型的圖片  轉換成webp格式,最開始使用了php gd類庫里 imagewebp 方法實現,結果發現轉換成的webp格式文件會偶爾出現空白內容的情況。像創建了一個透明圖層的圖片,但是尺寸和內存確跟轉換成功的文件一般無二。

初想,可以找個辦法判斷一下圖片是否無效的,網上找各種辦法,結果無果。雖然失敗了但是還是上一下代碼,期待大神能協助完善方法。

function imgToWebp($file=''){
    
    if(is_file($file)){
        $img = getimagesize($file);
        $type = $img['mime'];
        if($type == 'image/jpeg'){
            $file_source = imagecreatefromjpeg($file);
        }
        elseif($type == 'image/png'){
            $file_source = imagecreatefrompng($file);
        }
        else{
            return false;
        }
        $i = strripos($file,'.');
        $newFileName = substr($file,0,$i+1).'webp';
        $ret = imagewebp($file_source,$newFileName,'80');
        return $ret;
    }
}

使用前提條件為,php版本>=5.5  以上,並且開啟gd類庫。

上面這個方法的成功率不怎么高,歡迎指錯。由於成功率不高,我果斷換了實現方式。

既然php無法幫助我完成任務,自然要讓linux上的第三方類庫幫我實現格式轉換,所以找到了 libwebp庫。

1.首先安裝類型支持

#ubuntu
apt-get install webp
 
#centos
yum -y install libwebp-devel libwebp-tools

安裝完畢你的系統中將獲得三個工具(另外 vwebp、webpmux   待學習中)

1. cwebp   如需幫助請 cwebp --help,貼一條示例轉換命令:

cwebp -q 50 ~/***.jpg -o ***.webp

2. dwebp  將webp文件轉換成jgp、png,同上幫助:dwebp --help

dwebp ~/***.webp -o ~/***.png

3. gif2webp gif圖片資源轉成webp

cwebp -q 50 ~/***.gif -o ***.webp

 

有了系統的類庫支持,程序直接拋命令給linux處理就可以了,我這用的是php,記得要是線上模式你的php環境可能已經把exec、system等函數禁用了,查看你的php.ini,disable_funcitons配置項。提醒:禁用函數開啟將增加服務器的安全風險,所以還請程序中做好參數的校驗工作,確保你的過濾后命令不會造成不必要的損失。

歡迎大牛隨時批評及指正!!!

另外需要確定你的服務器上安裝了 libpng、libjpeg等支持包。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM