2017-09-18 184 views
0

私は新しい画像を作ったときに画像を開いていくつかのメタタグを書き込もうとすると、Tiffファイルを読み込んで保存しようとしていますは動作していません(画像は書き込むことができますが、元のタグはそのまま保持されます)。tiffファイル用のタグを追加するには

テストコードを添付しました。何か助けてもらえますか?枕のバージョン2.3と私のための

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

@Bernhard私はそれを明確にする、ありがとう! – MMzztx

+0

あなたのコードは私のマシンでエラーなく実行されました。 –

答えて

1

次作品:

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

もう1つは、あなたの枕です。2.3 img.save()は正しく動作しますか?画像を保存すると正しく表示されません。 img.show()は正しいですが、保存した後、それらのいくつかは空白になります。お待ち頂きまして、ありがとうございます! '.png'として保存します。 2.3は '.tiff'をサポートしていますか... – MMzztx

+0

differnceは、デフォルトで2.3のTIFFライターを使用し、新しいバージョンではデフォルトでlibtiffを使用していると思います。より新しいバージョンでは、 'TiffImagePlugin.WRITE_LIBTIFF = False'であなたの例のように、libtiffを使って書くことができるはずです。保存されたTIFFファイルの問題は、少なくとも古いバージョンのPIL TIFFライターの実装でサポートされていない機能が原因である可能性があります。 – Bernhard

関連する問題