Web アプリで Django + PIL + Amazon boto を使用しています。ユーザーが画像を送信すると、webapp がそれを表示します。ほとんどの場合、人々は携帯電話で撮影した写真を送信します。画像が間違った向きで表示されることがあります。PIL または Django の ImageField を使用して画像からメタ情報を取得し、それを使用して画像を正しい向きに回転させる方法はありますか?
質問する
5042 次
2 に答える
3
EXIF情報を取得するためにこれを試してください。注意: この_getexif()
メソッドは JPEG プラグインに属しています。他のタイプの画像には存在しません。
import Image
from PIL.ExifTags import TAGS
im = Image.open('a-jpeg-file.jpg')
exifdict = im._getexif()
if len(exifdict):
for k in exifdict.keys():
if k in TAGS.keys():
print TAGS[k], exifdict[k]
else:
print k, exifdict[k]
ハードディスクで見つけたランダムな画像の場合、これにより次のものが生成されました。
ExifVersion 0221
ComponentsConfiguration
ApertureValue (4312, 1707)
DateTimeOriginal 2012:07:19 17:33:37
DateTimeDigitized 2012:07:19 17:33:37
41989 35
FlashPixVersion 0100
MeteringMode 5
Flash 32
FocalLength (107, 25)
41986 0
Make Apple
Model iPad
Orientation 1
YCbCrPositioning 1
SubjectLocation (1295, 967, 699, 696)
SensingMethod 2
XResolution (72, 1)
YResolution (72, 1)
ExposureTime (1, 60)
ExposureProgram 2
ColorSpace 1
41990 0
ISOSpeedRatings 80
ResolutionUnit 2
41987 0
FNumber (12, 5)
Software 5.1.1
DateTime 2012:07:19 17:33:37
41994 0
ExifImageWidth 2592
ExifImageHeight 1936
ExifOffset 188
それはOrientation
あなたが望む値です。その意味は、例えば、exif オリエンテーション ページで見つけることができます。
生の exif データは、 から文字列として利用できますImage.info['exif']
。回転はメソッドで実現できますrotate()
。
生データを変更する以外に、PIL を使用して EXIF データを変更する方法を知りません。
于 2012-08-26T21:13:06.627 に答える