吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3542|回复: 15
收起左侧

[Python 转载] 图片批量转PDF

   关闭 [复制链接]
hanson1025 发表于 2022-6-10 13:33
之前论坛里找了几个,都会出现,如果图片是PNG的话,就错误提示“cannot save mode RGBA”,加了convert('RGB')也不行,试了好多方法,最终找到可以用的办法
学习PYTHON时间不长,代码有点乱
[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[0]:
        output1 = Image.open(img_files[0])
        output = Image.new('RGB',output1.size,(255,255,255))
        output.paste(output1,mask=output1.split()[3])
        img_files.pop(0)
    elif 'jpg' in img_files[0]:
        output = Image.open(img_files[0])
        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()[3])
            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)

免费评分

参与人数 4吾爱币 +4 热心值 +4 收起 理由
8382107 + 1 + 1 谢谢@Thanks!
Moran110 + 1 + 1 我很赞同!
zjh106 + 1 + 1 我很赞同!
MyModHeaven + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wihn 发表于 2022-6-10 14:24
学习学习。提点小建议:判断图片类型最好根据文件头来判断,从文件名进行字符串比较有出错的可能。就算是要用文件名字符串来判断,最好是endswith('.jpg')这样,要不然文件夹里混入jpg.txt之类的会出错。
kvttt_2021 发表于 2022-6-10 20:51
shubiao05 发表于 2022-6-10 17:45
发现一个问题:

Traceback (most recent call last):

pdf_file_path这个变量没有赋值。
csjygywj 发表于 2022-6-10 13:50
我这里有一个图片批量处理软件,不过用代码自己做一个是高大上的。
Zien0103 发表于 2022-6-10 14:17
学习学习
jackie102 发表于 2022-6-10 15:03
学习了,日常使用还是用PDF自带的虚拟打印机,直接转PDF。
y29111150 发表于 2022-6-10 16:27
大佬真厉害
w92vv 发表于 2022-6-10 16:41
wihn 发表于 2022-6-10 14:24
学习学习。提点小建议:判断图片类型最好根据文件头来判断,从文件名进行字符串比较有出错的可能。就算是要 ...

厉害厉害,学习了
shubiao05 发表于 2022-6-10 17:45
发现一个问题:

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

不太明白这是哪方面的原因
kvttt_2021 发表于 2022-6-10 20:49
w92vv 发表于 2022-6-10 16:41
厉害厉害,学习了
我写错地方了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-30 00:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表