用Python+PIL將目錄下jpg圖像批量轉(zhuǎn)成pdf文件

一、引言
最近單位有個(gè)事,需要將一堆圖片文件先轉(zhuǎn)成pdf文件,同事下了個(gè)windows下的圖形軟件,但要一個(gè)個(gè)轉(zhuǎn),幾百個(gè)jpg文件,太過麻煩,因此想用Python批量來做。一查,圖像處理庫(kù)PIL庫(kù)可以支持,一試,花了半個(gè)小時(shí)搞定,在此分享一下。
關(guān)于PIL庫(kù)的安裝和介紹,網(wǎng)上有比較多的文章,在這里就不做展開介紹。
另外本文的文件處理機(jī)制都是基于windows系統(tǒng)的,如果是linux等需要進(jìn)行對(duì)應(yīng)調(diào)整。
二、基本實(shí)現(xiàn)思路
本文主要用到pil庫(kù)的image模塊,通過open方法打開圖像,通過save另存一下,就實(shí)現(xiàn)了jpg轉(zhuǎn)pdf,特簡(jiǎn)單。對(duì)應(yīng)單個(gè)文件處理的函數(shù)實(shí)現(xiàn)如下:
def jpg2pdf(jpgFile):path,fileName = jpgFile.rsplit('\\',1)preName,postName = fileName.rsplit('.',1)img = Image.open(jpgFile)return img.save(path+"\\"+preName+'.pdf', "PDF", resolution=100.0, save_all=True)
有了單個(gè)文件處理機(jī)制,就只需要讀取目錄下的文件逐一處理即可,具體代碼請(qǐng)見下面的完整代碼。
三、完整代碼
from PIL import Imageimport osdef jpg2pdf(jpgFile):path,fileName = jpgFile.rsplit('\\',1)preName,postName = fileName.rsplit('.',1)img = Image.open(jpgFile)return img.save(path+"\\"+preName+'.pdf', "PDF", resolution=100.0, save_all=True)def jpg2pdfByPath(pathName):files = os.listdir(pathName)for f in files:if f.lower().find(".jpg")>0 :jpg2pdf(pathName+'\\'+f)jpg2pdfByPath(r'c:\img\jpg')
四、小結(jié)
本文介紹了通過PIL圖像處理庫(kù),批量將jpg等圖像文件轉(zhuǎn)成pdf文件的方法,并提供了完整實(shí)現(xiàn)代碼。上述方法不僅適用于jpg圖像文件,也適用于所有pil支持的圖像文件,不過關(guān)于圖像文件的匹配要稍微調(diào)整下。
更多圖像處理請(qǐng)參考專欄《OpenCV-Python圖形圖像處理》及《圖像處理基礎(chǔ)知識(shí)》的介紹。
對(duì)于缺乏Python基礎(chǔ)的同仁,可以通過老猿的免費(fèi)專欄《 專欄:Python基礎(chǔ)教程目錄》從零開始學(xué)習(xí)Python。
