Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

PythonでExifを編集

解決したいこと

JPEGファイルでプロパティのタイトルのみを変更したいので、
Exifを修正しようと下記のコードを実行したのですが、
エラーが発生してしまいました。
原因わかる方がいらっしゃいましたら、ご教示いただきたいです。

from PIL import Image
import piexif

def encode(s):
    b = s.encode('utf-16-le') + b'\x00\x00'
    return tuple([int(i) for i in b])

filename =  r'C:\test\00\00000008.jpg'
im = Image.open(filename)
exif_dict = piexif.load(im.info["exif"])

keyword = 'sample'
keyword = encode(keyword)

exif_dict["0th"][piexif.ImageIFD.XPTitle]= keyword

exif_bytes = piexif.dump(exif_dict)
im.save(filename, "jpeg", exif = exif_bytes)

発生しているエラー

Traceback (most recent call last):
  File "C:\Apps\test\test.py", line 23, in <module>
    exif_bytes = piexif.dump(exif_dict)
  File "C:\Users\A011\AppData\Local\Programs\Python\Python38\lib\site-packages\piexif\_dump.py", line 91, in dump
    thumbnail = _get_thumbnail(exif_dict["thumbnail"])
  File "C:\Users\A011\AppData\Local\Programs\Python\Python38\lib\site-packages\piexif\_dump.py", line 154, in _get_thumbnail
    segments = split_into_segments(jpeg)
  File "C:\Users\A011\AppData\Local\Programs\Python\Python38\lib\site-packages\piexif\_common.py", line 10, in split_into_segments
    raise InvalidImageDataError("Given data isn't JPEG.")
piexif._exceptions.InvalidImageDataError: Given data isn't JPEG.
0

2Answer

Comments

  1. Thumbnailを削除するとエラーが解消されました。
    ありがとうござました。

    とはいえ、腑に落ちない点があります。
    ①ExifのThumbnailにはいっている元の値: b'' ←これは?
    ②元ファイルの容量は3.5MBなんですが、Thumbnailを削除すると2.6MBほどになります。

    引き続き、ご意見いただければ幸いです。

  2. わからないです。


    exifのThumbnailは読んでの通りサムネイルです。
    画像の中にサムネ用の画像データを保持しており
    それを削除したので容量が減ったんだと思います。

Thumbnailを消しただけで容量が1/4も減ってしまうのはやはり?ですね、、、
ご意見ありがとうござました。

0Like

Your answer might help someone💌