前提・実現したいこと
PythonプログラムからJPGの"タグ"を取得および編集したいと考えています。
できていること・わかっていること
調べているうち、Pillow(PIL)ライブラリではEXIF情報の取得しかできないと知りました。
そこで、取得および編集も可能であるpiexifライブラリも使用することを考えています。
上記2つのライブラリを用いて以下のことはできました。
・手動で設定してあるタグを取得する
・EXIFにおける、プロパティのタグ部分の情報
id:40094
tag名:XPKeyword
該当のソースコード
python
1import pprint 2from PIL import Image 3import piexif 4 5filename = r"画像の絶対パス/nekohoge.jpg" 6im = Image.open(filename) 7exif = im._getexif() 8 9for tag_id, value in exif.items(): 10 if tag_id == 40094: 11 strv = str(value) 12 print(strv.replace('\x00', '')) 13 # >>>b'cat;test;cute' 14 15 16exif_dict = piexif.load(im.info["exif"]) 17 18pprint.pprint(exif_dict) 19# >>> {'0th': {270: b'neko_hoge', 20# 34665: 2144, 21# 40091: (110,0,101,0,107,0,111,0,95,0,104,0,111,0,103,0,101,0,0,0), 22# 40094: (99,0,97,0,116,0,59,0,116,0,101,0,115,0,116,0,59,0,99,0,117,0,116,0,101,0,0,0)}, 23# '1st': {}, 24# 'Exif': {}, 25# 'GPS': {}, 26# 'Interop': {}, 27# 'thumbnail': None} 28
※一部見やすいように表記を整えています。
わからないこと
- piexifを用いて取得したこの情報がタグにあたる部分だと思うのですが、
40094: (99,0,97,0,116,0,59,0,116,0,101,0,115,0,116,0,59,0,99,0,117,0,116,0,101,0,0,0)
PILを用いて得た情報と表示形式が大きく異なるため、どういう表示をしているのかがわかりません。
⇒自己解決しました。
各要素の数字において、0
は処理を飛ばし、他の数値をchr(数値)
で表示することでcat;test;cute
を取得できました。
0. 公式ドキュメントでは決まったid部分を変更することは可能なようですが、
上記のような画像タグ(id:40094)部分を、指定して変更するやり方が分かりませんでした。
そもそも不可能なのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/20 02:56