学习笔记(番外篇)——python批量转换图片格式
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
#-*- coding:utf-8 -*- from PIL import Image import os import globos.chdir(r'F:\work\images')#圖片所在的文件夾 for file_names in glob.glob('*.bmp'):#找出所有的后綴為bmp的格式的圖片print(file_names)file_path = r'F:\work\images'+'\\'+file_names#拼接出圖片的完整urlprint(file_path)out_path = os.path.splitext(file_path)[0]+'.jpg'Image.open(file_path).save(out_path) print('轉(zhuǎn)換成功')代碼做的比較簡潔,沒有錯(cuò)誤處理,還多了一些沒什么用的print語句,但事實(shí)上那是在測試看得到的圖片名字,圖片路徑是否正確。代碼挺簡單的,但是這里用到的三個(gè)模塊會(huì)在后面記錄下來,畢竟好記性不如爛筆頭,留著以后查看所用。
先說上面的代碼,先聲明文件編碼,然后引入三個(gè)所需要的模塊PIL,os,glob
#-*- coding:utf-8 -*- from PIL import Image import os import glob定位到圖片所在的文件夾,for語句找出所有后綴為bmp的圖片的名字的全稱(包含后綴名),輸出看得到的圖片的名字是否正確,拼接圖片的完整路徑,要注意轉(zhuǎn)義字符‘\’,輸出看拼接的路徑是否正確,然后將bmp的格式的圖片打開,存成jpg的格式的圖片,所有圖片處理完后,打印成功。
?
os.chdir(r'F:\work\images')#圖片所在的文件夾 for file_names in glob.glob('*.bmp'):#找出所有的后綴為bmp的格式的圖片print(file_names)file_path = r'F:\work\images'+'\\'+file_names#拼接出圖片的完整urlprint(file_path)out_path = os.path.splitext(file_path)[0]+'.jpg'Image.open(file_path).save(out_path) print('轉(zhuǎn)換成功')接下來記錄所用到的三個(gè)模塊的一些基本用法:
一、PIL模塊全稱python?Imaging Library (PIL)是PythonWare公司提供的免費(fèi)的圖像處理工具包,是python下的圖像處理模塊,支持多種格式,并提供強(qiáng)大的圖形與圖像處理功能。雖然在這個(gè)軟件包上要實(shí)現(xiàn)類似MATLAB中的復(fù)雜的圖像處理算法并不太適合,但是Python的快速開發(fā)能力以及面向?qū)ο蟮鹊戎T多特點(diǎn)使得它非常適合用來進(jìn)行原型開發(fā)。對(duì)于簡單的圖像處理或者大批量的簡單圖像處理任務(wù),python+PIL是很好的選擇。
下載PIL,linux可以直接通過命令:
sudo apt-get install python-imagingwindows平臺(tái)的可以直接去PIL官網(wǎng)下載exe文件:http://pythonware.com/products/pil/
from PIL import Image im = Image.open(r'F:\work\images\alien.jpg')#打開路徑下的alien.jpg圖片 im.show()#顯示已經(jīng)打開的圖片 new_im01 = im.resize((56,56),Image.BILINEAR)#將圖片縮小放大至56*56 new_im02 = new_im01.rotate(90)#旋轉(zhuǎn)圖片90度 new_in02.save('new_in02.jpg')#保存圖片,且圖片名為new_in02.jpg'具體的參考:PIL中文手冊(cè)、PIL官方文檔、華秋實(shí)的博客《初試PIL》
二、OS模塊
一般用于處理當(dāng)前所在的目錄,由于代碼極有可能在其它電腦或其它系統(tǒng)運(yùn)行,所以環(huán)境有所不一樣,所工作的當(dāng)前目錄也有可能不一樣,而os能解決這些問題。
os.name#輸出字符串指示正在使用的平臺(tái),window顯示'nt',linux則顯示'posix' os.getcwd()#函數(shù)得到當(dāng)前工作目錄,即當(dāng)前python腳本工作的目錄路徑。 os.listdir()#返回指定目錄下的所有文件和目錄名。 os.remove()#刪除一個(gè)文件 os.system()#運(yùn)行shell命令 os.sep#可以取代操作系統(tǒng)特定的路徑分割符。 os.linesep#字符串給出當(dāng)前平臺(tái)使用的行終止符,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。 os.path.split()#函數(shù)返回一個(gè)路徑的目錄名和文件名 os.path.isfile()和os.path.isdir()#函數(shù)分別檢驗(yàn)給出的路徑是一個(gè)文件還是目錄。 os.path.exists()#函數(shù)用來檢驗(yàn)給出的路徑是否真地存在 os.path.abspath(name)#獲得絕對(duì)路徑 os.path.normpath(path)#規(guī)范path字符串形式 os.path.getsize(name)#獲得文件大小,如果name是目錄返回0L os.path.splitext()#分離文件名與擴(kuò)展名 os.path.join(path,name)#連接目錄與文件名或目錄 os.path.dirname(path)#返回文件路徑 os.chdir()#用于改變當(dāng)前工作目錄到指定的路徑。參考:os模塊中文文檔
三、glob模塊
glob.glob:返回所有匹配的文件路徑列表。它只有一個(gè)參數(shù)pathname,定義了文件路徑匹配規(guī)則,這里可以是絕對(duì)路徑,也可以是相對(duì)路徑。
import glob print(glob.glob(r'F:\work\images\*.bmp'))#獲得指定目錄下的所有bmp格式的圖片 print(glob.glob(r'..\*.bmp'))#獲得當(dāng)前工作目錄下的上級(jí)目錄的所有bmp圖片glob.iglob:獲取一個(gè)可編歷對(duì)象,使用它可以逐個(gè)獲取匹配的文件路徑名。與glob.glob()的區(qū)別是:glob.glob同時(shí)獲取所有的匹配路徑,而glob.iglob一次只獲取一個(gè)匹配路徑。
import glob f = glob.iglob(r'../*.py') print(f)#<generator object iglob at 0x00B9FF80> for py in f:print(py)?
轉(zhuǎn)載于:https://my.oschina.net/u/3629884/blog/1506825
總結(jié)
以上是生活随笔為你收集整理的学习笔记(番外篇)——python批量转换图片格式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Json序列化提示缺少编译器要求的成员“
- 下一篇: CSS多行文本垂直居中