Python 使用PIL拆分.TIF文件

Python 使用PIL拆分.TIF文件,python,image,python-imaging-library,tiff,Python,Image,Python Imaging Library,Tiff,我查看了拆分.TIFF文件的文件,但是说实话,我没有完全理解答案,我希望得到一些澄清 我试图将一个包含多张发票的.Tif文件拆分为每个页面,然后将其压缩并上传到数据库中。PIL安装在将运行此程序的计算机上,因此我希望继续使用PIL库。我知道我可以在打开后使用PIL查看每个图像的大小等信息,但是当我试图保存每个图像时,它变得很危险。(下面的示例代码) 但是,当我运行此代码时,会出现以下错误: TypeError: 'NoneType' object has no attribute '__geti

我查看了拆分.TIFF文件的文件,但是说实话,我没有完全理解答案,我希望得到一些澄清

我试图将一个包含多张发票的.Tif文件拆分为每个页面,然后将其压缩并上传到数据库中。PIL安装在将运行此程序的计算机上,因此我希望继续使用PIL库。我知道我可以在打开后使用PIL查看每个图像的大小等信息,但是当我试图保存每个图像时,它变得很危险。(下面的示例代码)

但是,当我运行此代码时,会出现以下错误:

TypeError: 'NoneType' object has no attribute '__getitem__'
有什么建议吗

提前感谢您,

您需要PIL图像“搜索”方法来访问不同的页面

from PIL import Image

img = Image.open('multipage.tif')

for i in range(4):
    try:
        img.seek(i)
        img.save('page_%s.tif'%(i,))
    except EOFError:
        break

出现此错误是因为
ImageFile.save()
返回
None
,并且您试图访问
None
0
1
st元素。您是否尝试过从最后两行中删除
save()
之后的所有内容?我尝试过,它将保存第一页或发票#1,但因为有多张发票(例如,第1页是发票1,第2页是发票2)我正在尝试将第1页保存为一个文件名,将第2页保存为另一个文件名,但为什么您要尝试访问ImageFile.save()返回的值?老实说,我只是尽我所能尝试了一切,我已经尝试了ImageFile[0].save()、ImageFile.save[0]()和ImageFile.save()[0]尽我所能尝试了,这恰好是最新的版本。可能很难将tif拆分为“页面”,因为页面高度实际上是由打印机/打印机处理程序设置的。您最好将图像裁剪成多个像素的多个部分(无论“页面”的高度如何),然后保存这些裁剪的版本。如何查找Tiff堆栈中的帧数
img.info
不提供任何信息。对于帧数,请使用
n_frames
,如下所述:
from PIL import Image

img = Image.open('multipage.tif')

for i in range(4):
    try:
        img.seek(i)
        img.save('page_%s.tif'%(i,))
    except EOFError:
        break