赵乾舟 发表于 2022-3-24 20:15:33

抖音粉丝的PDF修改图片合集(包含PDF和png互相转换代码)

第一步,把所有PDF文件转成png图片格式
import fitz
import os
def pdf2png(url):
    name = []
    path = []
    i = 1
    #在路径内搜索PDF文件,并加入列表,生成字典,键值对分别是文件名和文件路径
    for lujing,liebiao,wenjian in os.walk(url):
      for a in wenjian:
            if a.endswith('pdf'):
                patha = lujing +'\\' +a
                path.append(patha)
                name.append(a)
                zidian = dict(zip(name,path))
    #在字典内拿到文件名创建文件夹,然后转图片放到对应文件夹
    for name,path in zidian.items():
      lujing=path.replace('.pdf','')
      if not os.path.exists(lujing):
            os.mkdir(lujing)
      #打开PDF文件,生成一个对象
      doc = fitz.open(path)
      print(path,f'一共{doc.pageCount}页')
      for pg in range(doc.pageCount):
            page = doc
            rotate = int(0)
            # 每个尺寸的缩放系数为2,这将为我们生成分辨率提高两倍的图像。
            zoom_x = 2.0
            zoom_y = 2.0
            trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
            pm = page.getPixmap(matrix=trans, alpha=False)
            pm.writePNG(lujing +'\\'+ '{:02}.png'.format(i))
            i = i+1
            print(f'第{i-1}页转换完成')
      i = 1


url = input('请输入文件夹地址:')
pdf2png(url)运行后,输入大文件夹的路径即可,会循环遍历每个文件夹,然后将每个文件夹内的PDF文件,转换成png图片,并保存到对应名字的文件夹。



赵乾舟 发表于 2022-3-24 20:16:42

第二步,把每个文件夹下的02.png图片删除,循环遍历每个文件夹,并拼接每个02.png的路径,然后循环路径,删除即可
import os
path = 'G:\多pdf裁切项目\级别5--图片\\'
nlst =
for i in nlst:
    os.remove(i)
    print(i,'已经删除')



赵乾舟 发表于 2022-3-24 20:18:29

第三步,把第一张和最后两张图片移动到目标文件夹,剩余图片固定区域填充白色
import numpy as np
import os,shutil
from PIL import Image

def tianchong(url):
    #新建文件夹,用来存储处理完的图片
    if not os.path.exists(url + '-填充后'):
      os.mkdir(url + '-填充后')

    # 把不需要处理的三张图片,移动到目标文件夹
    files = os.listdir(url)
    changdu = len(files)
    shutil.move(f"{url}\\01.png", url + '-填充后')
    shutil.move(f'{url}\\{int(changdu)}.png', url + '-填充后')
    shutil.move(f'{url}\\{int(changdu)+ 1}.png', url + '-填充后')

    # 把所有文件遍历出来
    files =
    # print(files)
    for a in files:
      newname = a.split('】')+'】-填充后'+'\\'+a.split('\\')[-1]

      # 开始处理图片
      img = Image.open(a)
      array = np.array(img)
      rows = len(array)
      cols = len(array)
      # 图片尺寸
      # print(rows)
      # print(cols)
      # 设置图片修改后图片颜色作者这里设置为白色
      colorl =

      # 依次遍历我们需要修改颜色的图片区域
      for col in range(100, 870):
            for row in range(830, 1060):
                array = colorl
      new_img = Image.fromarray(array)
      # new_img.show()
      new_img.save(newname)
      print(a, '已经处理完毕')

path = input('请输入文件夹地址:')

A = os.listdir(path)
for a in A:
    tianchong(path+'\\'+a)



赵乾舟 发表于 2022-3-24 20:27:35

第四步,每个文件夹内的图片合成一个PDF文件
import os
import img2pdf
def pngtopdf(path):
    name = path + '.pdf'
    with open(name, "wb") as f:
      f.write(img2pdf.convert())
url = input('请输入文件夹地址:')
A = os.listdir(url)
for i in A:
    pngtopdf(url+'\\'+i)
    print(url+'\\'+i,'已经合成完毕')



赵乾舟 发表于 2022-3-24 20:31:13

补充一点,图片转PDF这个,目前只支持png图片,如果图片是jpg格式的话,用如下代码把jpg转成png

from PIL import Image
import os
path = r'C:\Users\admin\Desktop\成品'
for lujing,liebiao,wenjian in os.walk(path):
    for i in wenjian:
      j = lujing+'\\'+i    #获取所有文件的完整路径
      name = i.split('.')   #拿到每个文件的名字,去掉后缀名
      im = Image.open(j)       #打开图片
      im.save(f"{lujing}\{name}.png")   #保存到原目录,保存成png格式
      print(j,'转换完成')



页: [1]
查看完整版本: 抖音粉丝的PDF修改图片合集(包含PDF和png互相转换代码)