在Python中将多张图片转换为单个PDF文件

云课堂学Python 2024-04-10 00:06:10

在本文中,我将向您展示一个小但非常酷的小程序,该项目将从特定文件夹中获取所有图像文件,并创建一个包含所有图像的 PDF 文件。

img2pdf

img2pdf 是一个开源的 Python 包,用于将图像转换为 pdf 格式,也可用于增强图像(亮度,对比度等)。我们可以使用 img2pdf 模块提供的 img2pdf.convert()函数,将图像转换为 pdf 字节,然后在 wb 模式下打开 pdf 文件并用字节写入。

使用 img2pdf 前,请先使用此命令安装包:

pip install img2pdf

将单张图片转换为 PDF 文件

导入 img2pdf 模块,使用 img2pdf.convert()函数,获取图像文件路径并将其转换为 PDF 文件。

文件以二进制模式写入。当以二进制模式写入时,Python在将数据写入文件时不会对数据进行任何更改。在文本模式下,Python 将对文本进行编码,这会损坏图像。

import img2pdfimg_path = "C:/pic/join1.jpg" #指定图片文件with open("name.pdf","wb") as f: f.write(img2pdf.convert(img_path))将多张图片转换为 PDF 文件

使用 for 循环和 os.listdir() 方法遍历文件夹中的所有文件,利用 endswith() 方法检测文件扩展名,将所有“.jpg”文件转换为 PDF 文件。

import img2pdfimport osimg_path = "C:/pic/"imgs = []for f in os.listdir(img_path): if not f.endswith(".jpg"): #检测文件类型,否则跳过 continue path = os.path.join(img_path, f) #完整文件路径 if os.path.isdir(path): ##检测是否为文件,否则跳过 continue imgs.append(path) #将文件完整路径添加到列表存储with open("name.pdf","wb") as f: f.write(img2pdf.convert(imgs))

img2pdf 有很多优点,可以实现图片无损转换,无需对图片重新编码,文件小,速度快。

其他传统的转换软件(如ImageMagick),需要重新对图片编码,不能无损转换,文件大,速度慢。

文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈!

0 阅读:0