1. 程式人生 > >centos下 將(jgp、png)圖片轉換成webp格式

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

sys 安裝 學習 isa 幫助 webp格式 system pos ini

由於項目要求需要將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等支持包。

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