找回密码
  注册[Register]
查看: 420|回复: 14

[python] 图片批量转PDF

[复制链接]
发表于 2022-6-10 20:02 | 显示全部楼层 |阅读模式
禁止求评分、诱导评分、互刷评分、互刷悬赏值,违规者封号处理。
禁止发布推广、邀请码、邀请链接、二维码或者有利益相关的任何推广行为。
所有非原创软件请发布在【精品软件区】,发帖必须按照本版块版规格式发帖。

之前论坛里找了几个,都会出现,如果图片是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)

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2022-6-10 20:02 | 显示全部楼层
感谢楼主分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-6-10 20:18 | 显示全部楼层
谢谢大佬分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-6-10 20:23 | 显示全部楼层
谢谢分享!
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-6-10 20:35 | 显示全部楼层
6666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-6-11 00:36 | 显示全部楼层
谢谢@Thanks!
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-6-11 08:25 | 显示全部楼层
顶帖是一种态度,也是一种尊重。
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-6-11 11:25 | 显示全部楼层
66666666666666666666666666666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-7-2 07:58 | 显示全部楼层
多谢楼主分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-7-2 08:00 | 显示全部楼层
先收藏了,万一用到呢
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

RSS订阅|手机版|小黑屋|大牛论坛 |我的广告

GMT+8, 2024-5-4 11:41 , Processed in 0.034120 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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