用Python+PIL将目录下jpg图像批量转成pdf文件
一、引言
最近单位有个事,需要将一堆图片文件先转成pdf文件,同事下了个windows下的图形软件,但要一个个转,几百个jpg文件,太过麻烦,因此想用Python批量来做。一查,图像处理库PIL库可以支持,一试,花了半个小时搞定,在此分享一下。
关于PIL库的安装和介绍,网上有比较多的文章,在这里就不做展开介绍。
另外本文的文件处理机制都是基于windows系统的,如果是linux等需要进行对应调整。
二、基本实现思路
本文主要用到pil库的image模块,通过open方法打开图像,通过save另存一下,就实现了jpg转pdf,特简单。对应单个文件处理的函数实现如下:
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)
有了单个文件处理机制,就只需要读取目录下的文件逐一处理即可,具体代码请见下面的完整代码。
三、完整代码
from PIL import Image
import os
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)
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')
四、小结
本文介绍了通过PIL图像处理库,批量将jpg等图像文件转成pdf文件的方法,并提供了完整实现代码。上述方法不仅适用于jpg图像文件,也适用于所有pil支持的图像文件,不过关于图像文件的匹配要稍微调整下。
更多图像处理请参考专栏《OpenCV-Python图形图像处理》及《图像处理基础知识》的介绍。
对于缺乏Python基础的同仁,可以通过老猿的免费专栏《 专栏:Python基础教程目录》从零开始学习Python。
评论