2017-09-18 474 views
0

我試圖讀取並保存一些tiff文件與一些額外的標籤,當我做出一個新的圖像,運行良好,但當我打開圖像,然後試圖寫一些元標籤回來沒有工作(圖像可以被寫入,但它會保持原始標籤沒有任何改變)。如何爲tiff文件添加額外的標籤

我附上我的測試代碼,非常感謝您的幫助!

from PIL import Image, TiffImagePlugin 
def test_custom_metadata(): 

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

    info = TiffImagePlugin.ImageFileDirectory() 
    CustomTagId = 37000 

    info[CustomTagId] = 6 
    info.tagtype[CustomTagId] = 3 # 'short' TYPE 

    Image.DEBUG=True 
    TiffImagePlugin.WRITE_LIBTIFF = False # Set to True to see it break. 
    img.save('./temp2.tiff', tiffinfo = info) 

test_custom_metadata() 
+0

什麼是 「不工作」 是什麼意思?是否有錯誤,如果是這樣,請將堆棧跟蹤添加到帖子中。或者是圖像寫入,但你看不到你的自定義tiff標籤? – Bernhard

+0

@伯恩哈德我說得很清楚,謝謝! – MMzztx

+0

您的代碼在我的機器上運行時沒有錯誤。 –

回答

1

我下面的作品與枕頭2.3版本:

from PIL import Image 

image_1 = Image.open('input.tiff') 
image_1.tag[37000] = 'my special tiff tag' 
image_1.save('output.tiff', tiffinfo=image_1.tag) 

image_2 = Image.open('output.tiff') 
print image_2.tag[37000] 

在當前文件夾中的input.tiff運行時,這將打印my special tiff tag

我的理解是,這隻有當你不使用libtiff寫入文件時纔有效。使用libtiff時,自定義標記被忽略。

+0

謝謝您的迴應!在我將枕頭從4.1更換爲2.3之後,它可能會因爲版本問題而出現問題。 – MMzztx

+0

還有一件事,是你的枕頭2.3 img.save()能正常工作嗎?當我保存圖像時,它無法正確顯示。 img.show()是正確的,但在保存之後,其中一些變爲空白。謝謝你的耐心!另存爲'.png'。 2.3是否支持'.tiff'... – MMzztx

+0

我認爲差異在於,2.3默認使用它自己的TIFF編寫器和新版本,默認情況下是在後臺使用libtiff。在新版本中,你應該可以用libtiff來寫作,就像你在'TiffImagePlugin.WRITE_LIBTIFF = False'中做的那樣。保存的TIFF文件的問題很可能是由於PIL TIFF編寫器實現中的某些不受支持的功能(至少在舊版本中)。 – Bernhard

相關問題