現(xiàn)在網(wǎng)絡(luò)上很多站點上使用的圖片都換成了webp格式。webp格式文檔的優(yōu)點是:文件小萍诱,非常小悬嗓。缺點也很明顯,不太方便直接使用裕坊。需要使用比較專業(yè)的編輯工具包竹。
使用python的Pillow庫,可以將webp格式文件轉(zhuǎn)換為png或jpg格式籍凝。
網(wǎng)上隨意找了一張webp圖片周瞎,圖片地址,大小為44.9K饵蒂。使用Pillow庫轉(zhuǎn)換為png為496K声诸。
因為圖片太大,使用了兩種PNG壓縮方式進行對比退盯。
1?使用Pillow庫對圖片進行壓縮彼乌,從44.9K壓縮到496K≡ㄇǎ基本上沒什么變化慰照。
2 使用Tinity庫進行圖片壓縮,需要使用api_key宫纬,點擊(官方地址)獲取api_key焚挠。非常出名的壓縮工具。從624K壓縮到289K漓骚。效果非常明顯蝌衔,圖片質(zhì)量損失很小。缺點是蝌蹂,速度慢噩斟。
3 使用Google提供的庫,可惜不能翻墻孤个,無法對比剃允。
代碼如下:
# 導(dǎo)入PNG壓縮庫
from PILimport Image
import tinify
import subprocess
# 使用webpa轉(zhuǎn)換為PNG
def convert_webp_to_png(webp_file_path, output_png_file_path):
# 打開WebP格式的圖片
? ? with Image.open(webp_file_path)as img:
width, height = img.size
# 轉(zhuǎn)換為PNG格式
? ? ? ? png_img = img.save(output_png_file_path, 'PNG')
# 使用Pillow庫對圖片進行壓縮
# 壓縮質(zhì)量很差,不推薦使用
def pillow_compress_image(pillow_input_image_path, pillow_output_image_path):
with Image.open(pillow_input_image_path)as image:
image.save(pillow_output_image_path, "PNG", optimize=True, quality=60)
# 使用Tinity庫進行圖片壓縮
def tinity_compress_image(tinity_input_image_path, tinity_output_image_path):
tinify.key ="***" #這里需要填寫您在官方申請的api_key
? ? with open(webp2png, 'rb')as source:
source_data = source.read()
result_data = tinify.from_buffer(source_data).to_buffer()
with open(tinity_output_image_path, 'wb')as output:
output.write(result_data)
# 使用tinify庫對圖片進行壓縮
webp_file ='./output/Webp2jpg_png/example.webp'
webp2png ='./output/Webp2jpg_png/webp2png.png'
webp2png_Pillow ='./output/Webp2jpg_png/webp2png_Pillow.png'
webp2png_Tinity ='./output/Webp2jpg_png/webp2png_Tinity.png'
# 把webp轉(zhuǎn)換為png
convert_webp_to_png(webp_file, webp2png)
# 使用pillow庫壓縮圖片
pillow_compress_image(webp2png, webp2png_Pillow)
# 使用Tinity庫壓縮圖片
tinity_compress_image(webp2png, webp2png_Tinity)