Python實現(xiàn)圖片格式轉(zhuǎn)換
本文實例為大家分享了Python實現(xiàn)圖片格式轉(zhuǎn)換的具體代碼,供大家參考,具體內(nèi)容如下
碰上這樣一個情景:
我從網(wǎng)絡上下載了一張表情包圖片,存放在 MyImages
文件夾下,文件類型為 .wepg
,為了能夠在QQ上順利發(fā)送,我需要將它轉(zhuǎn)換為常用的 .jpg
或 .jpeg
格式。
如圖:
解決:
在 MyImages
目錄下創(chuàng)建名為 convert.py
的Python文件,開始代碼編寫
代碼思路:
- 獲取當前目錄的文件名列表
- 開始遍歷列表元素
- 嘗試讀取圖片,如果遇到
IOError
(說明不是可讀取的圖片類型,略過這一文件) ,否則繼續(xù)執(zhí)行 - 如果圖片已經(jīng)是
.jpg
或.jpeg
后綴,則不處理 - 將圖片以
jpeg
格式保存在當前目錄 - 將原圖片移動到
./SourceImage
文件夾下(如果此文件夾不存在則新建)
完整代碼
#!python3 import os from PIL import Image #獲取文件名列表 imgList = os.listdir("./") ##函數(shù):獲取文件的后綴長度(例如 jpg 和 jpeg 的長度分別為 3 和 4 ) #def typeNameLengthCount(name): #?? ?count = 0 #?? ?for i in range(1, len(name)): #?? ??? ?if(name[-i] == '.'): #?? ??? ??? ?break #?? ??? ?else: #?? ??? ??? ?count += 1 #?? ?return count #修改:上面這是原來的代碼,后來想起os庫有現(xiàn)成的分離文件名和后綴名的函數(shù),于是此自定義函數(shù)棄用 #檢查 ./SourceImage 目錄是否存在,不存在則創(chuàng)建它 if (not (os.path.exists("./SourceImage"))): ?? ?os.mkdir("./SourceImage") #開始遍歷文件 for name in imgList: ?? ?try: ?? ??? ?img = Image.open(name) #嘗試打開圖片,如果不是可以打開的類型,則忽略(因為需要忽略代碼文件本身及后面創(chuàng)建的SourceImage文件夾) ?? ??? ? ?? ??? ?#type_length = typeNameLengthCount(name) ?? ??? ?#file_type = name[-type_length:] #得到后綴的長度 ?? ??? ?#修改:用庫方法替代自定義方法: ?? ??? ?file_name, file_type = os.path.splitext(name) ?? ??? ? ?? ??? ?if file_type == 'jpg' or file_type == 'jpeg': #如果已經(jīng)是 .jpg 或 .jpeg 類型,則跳過 ?? ??? ??? ?continue ?? ??? ?else: ?? ??? ? ?? ??? ??? ?#img.save("%s.jpg"%(name[0:(-type_length-1)]), 'jpeg') ?? ??? ??? ?#修改:改用下面這行代碼: ?? ??? ??? ?img.save("%s.jpg"%(file_name), 'jpeg') ?? ??? ??? ? ?? ??? ??? ?os.rename(name, "./SourceImage/%s"%name) #移動原圖片,此處用shutil.move( , ) 方法同樣可行, 而且這個方法可以實現(xiàn)文件在磁盤間的移動 ?? ?except IOError: ?? ??? ?print("one file was ignored")
運行:
運行前
運行時
運行后
原圖片將保留
以后再下載保存的文件就運行一下這個代碼就好了
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
python數(shù)據(jù)類型判斷type與isinstance的區(qū)別實例解析
這篇文章主要介紹了python數(shù)據(jù)類型判斷type與isinstance的區(qū)別實例解析,具有一定參考價值,需要的朋友可以了解下。2017-10-10Python檢查判斷一個數(shù)是不是另一個數(shù)的整數(shù)次冪實例深究
在數(shù)學和計算中,確定一個數(shù)是否為另一個數(shù)的整數(shù)次冪是一個常見而重要的問題,例如,我們可能需要判斷一個數(shù)是否是某個數(shù)的平方、立方或其他冪次,本文將探討在Python中如何實現(xiàn)這一功能,通過數(shù)學方法和算法檢查一個數(shù)是否是另一個數(shù)的整數(shù)次冪2023-12-12python?memory_profiler庫生成器和迭代器內(nèi)存占用的時間分析
這篇文章主要介紹了python?memory_profiler庫生成器和迭代器內(nèi)存占用的時間分析,文章圍繞主題展開詳細的內(nèi)容介紹,感興趣的小伙伴可以參考一下2022-06-06Python使用Keras OCR實現(xiàn)從圖像中刪除文本
這篇文章主要為大家介紹了如何在Python中利用Keras OCR實現(xiàn)快速地從圖像中刪除文本,從而作為圖像分類器的預處理步驟,需要的可以參考一下2022-03-03