图片批量转PDF
之前论坛里找了几个,都会出现,如果图片是PNG的话,就错误提示“cannot save mode RGBA”,加了convert('RGB')也不行,试了好多方法,最终找到可以用的办法学习PYTHON时间不长,代码有点乱
from PIL import Image
from tkinter import filedialog
import os
def to_pdf(folder_path):
files = os.listdir(folder_path)
img_files = []
sources = []
for file in files:
if 'png' in file or 'jpg' in file:
img_files.append(folder_path + file)
img_files.sort()
if 'png' in img_files:
output1 = Image.open(img_files)
output = Image.new('RGB',output1.size,(255,255,255))
output.paste(output1,mask=output1.split())
img_files.pop(0)
elif 'jpg' in img_files:
output = Image.open(img_files)
img_files.pop(0)
for file in img_files:
if 'png' in file:
rgba_file = Image.open(file)
rgb_file = Image.new('RGB',rgba_file.size,(255,255,255))
rgb_file.paste(rgba_file, mask=rgba_file.split())
sources.append(rgb_file)
elif 'jpg' in file:
img_file = Image.open(file)
if img_file.mode == 'RGB':
img_file = img_file.convert('RGB')
sources.append(img_file)
pdf_file_path = filedialog.asksaveasfilename(title='请选择PDF文件保存目录',filetypes=[('PDF文件','.pdf')])
if pdf_file_path.endswith('.pdf') == False:
pdf_file_path = pdf_file_path + '.pdf'
output.save(pdf_file_path, "pdf", save_all=True, append_images=sources)
if __name__ == "__main__":
img_dir = filedialog.askdirectory(title='请选择图片所在文件夹') + '/'
to_pdf(img_dir) 学习学习。提点小建议:判断图片类型最好根据文件头来判断,从文件名进行字符串比较有出错的可能。就算是要用文件名字符串来判断,最好是endswith('.jpg')这样,要不然文件夹里混入jpg.txt之类的会出错。 shubiao05 发表于 2022-6-10 17:45
发现一个问题:
Traceback (most recent call last):
pdf_file_path这个变量没有赋值。 我这里有一个图片批量处理软件,不过用代码自己做一个是高大上的。 学习学习{:301_1008:} 学习了,日常使用还是用PDF自带的虚拟打印机,直接转PDF。 大佬真厉害 wihn 发表于 2022-6-10 14:24
学习学习。提点小建议:判断图片类型最好根据文件头来判断,从文件名进行字符串比较有出错的可能。就算是要 ...
厉害厉害,学习了 发现一个问题:
Traceback (most recent call last):
File "E:\py_files\Py_office\pic_to_pdf\pic_to_pdf.py", line 35, in <module>
if pdf_file_path.endswith('.pdf') == False:
NameError: name 'pdf_file_path' is not defined
不太明白这是哪方面的原因 w92vv 发表于 2022-6-10 16:41
厉害厉害,学习了我写错地方了。
页:
[1]
2