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