WebP格式介紹(附python版本代碼用於對圖像進行WebP編碼和解碼)

不管是 PC 還是移動端,圖片一直是流量大頭,如何保證在圖片的精細度不降低的前提下縮小圖片體積,成爲了一個有價值且值得探索的事情。但如今對於 JPEG、PNG 和 GIF 這些圖片格式的優化幾乎已經達到了極致,爲了進一步有效的壓縮圖片, Google 給了我們一個新選擇:WebP。

WebP(發音:weppy)是一種同時提供了有損壓縮與無損壓縮(可逆壓縮)的圖片文件格式,是由Google在購買On2 Technologies後發展出來,以BSD授權條款發佈,可以免費使用。根據Google較早的測試,WebP的無損壓縮比網絡上找到的PNG檔少了45%的文件大小,即使這些PNG檔在使用pngcrush和PNGOUT處理過,WebP還是可以減少28%的文件大小。因此,如果服務器需要存儲大量的圖片,那麼使用WebP格式可以大幅減少存儲開銷,同時也可以降低網絡傳輸流量。

目前,主流的瀏覽器如360瀏覽器、搜狗瀏覽器、火狐瀏覽器、谷歌瀏覽器都支持WebP格式。同時,谷歌也提供了安卓和iOS的WebP格式demo。因此,爲了有效降低存儲開銷,使用WebP是一個較爲穩妥成熟的方案。

下面給出Python版本的WebP圖像編碼和解碼代碼。

首先安裝Pillow庫:

pip install pillow

然後編碼代碼如下(實現jpg圖片到WebP格式圖片的轉換):

from PIL import Image
imagePath = "1.jpg" #讀入文件名稱
outputPath = "1.webp" #輸出文件名稱
im = Image.open(imagePath) #讀入文件
im.save(outputPath) #編碼保存

編碼完成後可以直接用360瀏覽器打開1.webp文件,查看是否正常。

解碼代碼如下:

from PIL import Image
imagePath = "1.webp" #讀入文件名稱
outputPath = "1_new.jpg" #輸出文件名稱
im = Image.open(imagePath) #讀入文件
im.save(outputPath) #解碼保存

採用上述方式只需要安裝較常用的pillow庫即可,但是無法有效的對圖像編碼質量進行設置,比如壓縮因子等。下面介紹另一種更有效的方法:使用webp庫。

webp在windows下面的安裝比較麻煩,需要依賴C++環境進行編譯。由於我電腦以前提前裝好了VS2015,因此下面就比較簡單了:

pip install webp

安裝時可能會出現下面的錯誤:

LINK : fatal error LNK1158: 無法運行“rc.exe”
error: command 'E:\\toolplace\\VS2015\\VC\\BIN\\x86_amd64\\link.exe' failed with exit status 1158

爲了解決上述問題,只需要將C盤中C:\Program Files (x86)\Windows Kits\8.1\bin\x64  中的rc.exe和rcdll.dll文件複製到VS2015安裝目錄下,具體複製路徑爲:E:\toolplace\VS2015\VC\bin\x86_amd64

安裝完成後就可以直接使用了。代碼如下:

# 編碼
import webp

from PIL import Image
imagePath = "1.jpg" #讀入文件名稱
im = Image.open(imagePath) #讀入文件
webp.save_image(im, '1.webp', quality=80)  #壓縮編碼  設置壓縮因子爲80    

具體的webp使用請參考官方網址:https://github.com/anibali/pywebp

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章