2014-01-24 48 views
3

我看了一下Split multi-page tiff with python拆分.TIFF文件的文件,但说实话,我没有完全理解答案,我希望有一点澄清。使用PIL拆分.TIF文件

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

def Split_Images(img,numFiles): 
    ImageFile = Image.open(img) 
    print ImageFile.size[0] 
    print ImageFile.size[1] 
    ImageFile.save('InvoiceTest1.tif')[0] 
    ImageFile.save('InvoiceTest2.tif')[1] 

然而,当我运行此代码,我得到以下错误:

TypeError: 'NoneType' object has no attribute '__getitem__' 

有什么建议?

谢谢你在前进,

+0

由于'ImageFile.save()'返回'None',并且您试图访问'None'的'0'和'1'st元素,所以出现错误。你尝试从最后两行删除save()后的所有内容吗? – sundance

+0

我做了,它会保存第一页或发票#1,但因为有多个发票(第1页是发票1,第2页是发票2例如)我试图将页1保存为一个文件名和Page 2作为不同的文件名 – user3232819

+0

但为什么你想要访问ImageFile.save()返回的值? – sundance

回答

2

您需要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 
+0

如何找到Tiff堆栈中的帧数? 'img.info'不给任何东西。 – MostafaMV