2014-01-24 38 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