Python使用PIL實現(xiàn)圖片的批量格式轉(zhuǎn)換
1. 前言
在日常開發(fā)和圖像處理工作中,我們經(jīng)常需要將圖片從一種格式轉(zhuǎn)換為另一種格式。本文將基于一個實際的Python腳本示例,介紹如何實現(xiàn)批量圖片格式轉(zhuǎn)換,并對比幾種常用的圖像處理庫的優(yōu)劣勢。
2. 技術(shù)對比分析
2.1 OpenCV
優(yōu)勢:
- 功能強(qiáng)大,支持多種圖像處理操作;
- 性能優(yōu)秀,特別是在處理大量圖像時;
- 支持多種圖像格式。
劣勢:學(xué)習(xí)曲線較陡峭;對于簡單的格式轉(zhuǎn)換任務(wù)可能過于復(fù)雜;主要專注于計算機(jī)視覺任務(wù)。
2.2 Wand
優(yōu)勢:
- 功能非常全面,支持超過100種圖像格式;
- 提供豐富的圖像處理功能;
- 支持命令行工具的所有功能。
劣勢:相對于PIL,社區(qū)支持較??;安裝可能比較復(fù)雜。
2.3 pillow
優(yōu)勢:
- 簡單易用,API直觀;
- 文檔完善,社區(qū)支持良好;
- 輕量級,適合簡單的圖像處理任務(wù);
- 廣泛應(yīng)用于Python圖像處理領(lǐng)域。
劣勢:在處理大量圖像時性能不如OpenCV;功能相對有限,主要專注于基本的圖像處理。
3. 實現(xiàn)分析
- 導(dǎo)入必要的庫:使用
PIL庫處理圖像,os庫處理文件和文件夾操作。 - 創(chuàng)建輸出文件夾:使用
os.makedirs(output_folder, exist_ok=True)確保輸出文件夾存在。 - 遍歷輸入文件夾:使用
os.listdir()獲取輸入文件夾中的所有文件。 - 篩選WebP文件:通過
filename.lower().endswith('.webp')篩選出WebP格式的文件。 - 圖像轉(zhuǎn)換:使用
Image.open()打開WebP圖片,然后通過img.save()保存為PNG格式。 - 異常處理:在轉(zhuǎn)換過程中加入異常處理,確保單個文件轉(zhuǎn)換失敗不會影響其他文件的轉(zhuǎn)換。
4. 實現(xiàn)代碼
from PIL import Image
import os
def convert_webp_to_png(input_folder, output_folder):
# 創(chuàng)建輸出文件夾(如果不存在)
os.makedirs(output_folder, exist_ok=True)
# 遍歷輸入文件夾中的所有webp文件
for filename in os.listdir(input_folder):
if filename.lower().endswith('.webp'):
# 構(gòu)建完整的文件路徑
input_path = os.path.join(input_folder, filename)
# 打開webp圖片
try:
with Image.open(input_path) as img:
# 生成輸出文件名(將.webp替換為.png)
output_filename = os.path.splitext(filename)[0] + '.png'
output_path = os.path.join(output_folder, output_filename)
# 轉(zhuǎn)換并保存為png格式
img.save(output_path, 'PNG')
print(f"已轉(zhuǎn)換: {filename} -> {output_filename}")
except Exception as e:
print(f"轉(zhuǎn)換失敗 {filename}: {str(e)}")
if __name__ == "__main__":
input_folder = "webp"
output_folder = "out_webp"
convert_webp_to_png(input_folder, output_folder)
print("所有webp圖片已轉(zhuǎn)換完成!")
5. 執(zhí)行結(jié)果

6. 執(zhí)行前后對比


7. 總結(jié)
- 通過使用PIL庫,我們可以輕松地實現(xiàn)WebP到PNG的格式轉(zhuǎn)換。
- 對比了OpenCV、Wand和PIL三種常用的圖像處理庫,每種庫都有其適用的場景。 在選擇圖像處理庫時,應(yīng)根據(jù)具體需求和項目特點來決定。
到此這篇關(guān)于Python使用PIL實現(xiàn)圖片的批量格式轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)Python PIL圖片格式轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python程序中使用SQLAlchemy時出現(xiàn)亂碼的解決方案
這篇文章主要介紹了Python程序中使用SQLAlchemy時出現(xiàn)亂碼的解決方案,SQLAlchemy是Python常用的操作MySQL數(shù)據(jù)庫的工具,需要的朋友可以參考下2015-04-04
Python數(shù)據(jù)類型之String字符串實例詳解
這篇文章主要介紹了Python數(shù)據(jù)類型之String字符串,結(jié)合實例形式詳細(xì)講解了Python字符串的概念、定義、連接、格式化、轉(zhuǎn)換、查找、截取、判斷等常見操作技巧,需要的朋友可以參考下2019-05-05
Python發(fā)送郵件的幾種方式(最全總結(jié)!)
發(fā)送電子郵件是個很常見的開發(fā)需求,平時如果有什么重要的信息怕錯過,就可以發(fā)個郵件到郵箱來提醒自己,這篇文章主要給大家介紹了關(guān)于Python發(fā)送郵件的幾種方式,需要的朋友可以參考下2024-03-03

