我想使用PIL的.save()
方法将我的PIL图像列表导出为PDF。
在PIL文档中,保存部分说明如下:
=> 我们可以在pdf格式中使用
append_images
选项。
在Pillow的Github页面中,这个问题说:增加了将图像添加到PDF保存的功能 #2526
我写了这段代码:
import PIL
im1 = PIL.Image.open("1.jpg").convert("RGB")
im2 = PIL.Image.open("2.jpg").convert("RGB")
im3 = PIL.Image.open("3.jpg").convert("RGB")
images = [im1,im2,im3]
images[0].save("out.pdf", save_all=True, append_images=images[1:])
但是它不起作用!
出现了以下错误:
Traceback (most recent call last):
File "sample.py", line 13, in <module>
gif.save("out.pdf", save_all=True, append_images=images)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/PIL/Image.py", line 1928, in save
save_handler(self, fp, filename)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/PIL/PdfImagePlugin.py", line 55, in _save_all
_save(im, fp, filename, save_all=True)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/PIL/PdfImagePlugin.py", line 182, in _save
Image.SAVE["JPEG"](im, op, filename)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/PIL/JpegImagePlugin.py", line 609, in _save
info = im.encoderinfo
AttributeError: 'Image' object has no attribute 'encoderinfo'
append_images=images
。你也可以将导入语句更改为from PIL import Image
,然后只需使用Image.open(..)
。 - Vasilis G.append_images
参数调用.save
方法来编写正确的多帧GIF。如果源图像是GIF,则甚至可以保存多帧PDF,但是当我检查生成的PDF文件时,它不正确。我在我的测试中使用了3个图像,输出的PDF由3页组成,每页包含3列图像,顶部和底部的图像似乎是列表中的第1个图像,并且中间的图像是我第1个图像的错误解码版本。 :( - PM 2RingPIL
不同)。 - martineau