使用Python把一堆图片排序后转换成PDF,最终得到一人之下漫画pdf

目的

  • 把一些图片转换成PDF

使用模块

  • os
  • re
  • PIL
# -*- coding: utf-8 -*-
# Time: 2021/4/5 14:59

import os
import re
from PIL import Image


def open_file_url(path):
    # os.listdir 会得到目录下的文件名列表
    file_name_list = os.listdir(path)
    # print(file_name_list)
    # 得到的文件名列表的顺序有点不符合预期, 所以要先进行一下排序
    # re.findall(r"\d+")会根据正则在指定字符串内查找全部的数字,返回一个列表, "\d+" 表示查找数字
    # 根据文件名的特征取出最后一个数字进行排序即可
    file_name_list.sort(key=lambda x: int(re.findall(r"\d+", x)[-1]))
    image_list = [] # 创建一个列表把通过 Image 打开的图片放入
    pdf_poster = Image.open(path + "\\" + file_name_list[0])  # 打开第一张图片,这个图片可以看成生成PDF的封面
    file_name_list.pop(0) # 为防止重复图片
    for file_name in file_name_list:
        # path 是传进来的文件夹路径, 所以在拼接上图片的名字就是文件夹下图片的完整路径
        # print(file_name)
        img_url = path + "\\" + file_name
        print(img_url)
        imgfile = Image.open(img_url)
        image_list.append(imgfile)

    pdf_poster.save("./一人之下第一话.pdf", 'pdf', save_all=True, append_images=image_list)


if __name__ == '__main__':
    open_file_url(r"D:\QMDownload\photo\67一人之下漫画1.姐姐1")


问题-文件的排序

  • 图片的排序

原始图片的排序, 在Python代码读取文件名时自动排的序如下, 可以看到序列与想象中的有些差异
在这里插入图片描述
使用列表的sort 方法以及re模块的findall方法进行自定义排序即可让文件安装指定文件名排序

# file_name_list 是文件名列表
# re.findall(r"\d+")会根据正则在指定字符串内查找全部的数字,返回一个列表, "\d+" 表示查找数字
# 根据文件名的特征取出最后一个数字进行排序即可
file_name_list.sort(key=lambda x: int(re.findall(r"\d+", x)[-1]))

根据文件名进行排序后
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值