24

PIL を使用して画像のサイズを変更 (サムネイル) しようとすると、exif データが失われます。

サムネイル画像にexifデータを保存するにはどうすればよいですか? 同じものを検索したところ、いくつかのリンクがありましたが、どれも機能していないようです。

from PIL import  Image
import StringIO

file_path = '/home/me/img/a.JPG'
im = Image.open( file_path)
THUMB_SIZES = [(512, 512)]
for thumbnail_size in THUMB_SIZES:
    im.thumbnail( thumbnail_size, Image.ANTIALIAS)
    thumbnail_buf_string = StringIO.StringIO()
    im.save('512_' + "a", "JPEG")

元の画像にはexifデータがありますが、画像im(512_a.JPEG)にはありません。

4

3 に答える 3

20

ソースコードの一部を読み、exif データがサムネイルと共に保存されていることを確認する方法を見つけました。

PIL で jpg ファイルを開くと、Imageオブジェクトにはinfoディクショナリである属性があります。キーの 1 つが呼び出されexif、その値はバイト文字列 (画像からの生の EXIF データ) です。このバイト文字列を save メソッドに渡すと、exif データが新しい jpg ファイルに書き込まれます。

from PIL import Image

size = (512, 512)

im = Image.open('P4072956.jpg')
im.thumbnail(size, Image.ANTIALIAS)
exif = im.info['exif']
im.save('P4072956_thumb.jpg', exif=exif)

人間が判読できるバージョンの exif データを取得するには、次のようにします。

from PIL import Image
from PIL.ExifTags import TAGS

im = Image.open('P4072956.jpg')
for k, v in im._getexif().items():
    print TAGS.get(k, k), v
于 2013-06-11T14:46:46.953 に答える