1. python将pdf反色

分为以下三步:

  1. 将pdf拆分为图片
  2. 将图片以此反色
  3. 将反色图片重新合成pdf,覆盖原始文件
import cv2
from PIL import Image
import os

def combine2Pdf( folderPath, pdfFilePath ):
    files = os.listdir( folderPath )
    pngFiles = []
    sources = []
    for file in files:
        if 'png' in file or 'jpg' in file:
            pngFiles.append( folderPath + file )
    pngFiles.sort()
    output = Image.open( pngFiles[0] )
    pngFiles.pop( 0 )
    for file in pngFiles:
        pngFile = Image.open( file )
        if pngFile.mode == "RGB":
            pngFile = pngFile.convert( "RGB" )
        sources.append( pngFile )
    output.save( pdfFilePath, "pdf", save_all=True, append_images=sources )

from pdf2image import convert_from_path

dir_ = 'data/reverse/'
output = dir_ + 'output/'
pdf = 'Animenz - Grand Escape.pdf'

for file in os.listdir(output):
    os.remove(output + file)

# 转换为图片并保存
pages = convert_from_path(dir_ + pdf, 500)
index=0
for page in pages:
    index+=1
    page.save(output + str(index) + '.jpg', 'JPEG')


# 反色
outputs=os.listdir(output)
for file in outputs:
    print(file)
    src=cv2.imread(output + file,1)
    print(src.shape)
    Img=255-src
    print(Img.shape)
    cv2.imwrite(output + file + '.jpg', Img)
    os.remove(output + file)

# 合成pdf
combine2Pdf(output, dir_ + pdf)

2. python将图片转为gif

from moviepy.editor import ImageSequenceClip
import os

img_names = []
directory = 'data/pic'
print(os.listdir(directory))

for t in os.listdir(directory):
    if t.endswith('.png') or t.endswith('.jpg'):
        pre, _ = t.split('.')
        img_names.append(int(pre))

img_names.sort()
names=[]
for t in img_names:
    names.append(directory + "/%s.png" % t)

print(img_names)
clip = ImageSequenceClip(names, fps=1)
clip.write_gif('data/demo.gif')