EXIF情報とは
EXIF情報は、JPEG(JPG)画像が保持する情報の一つで、画像の回転角度の情報(元の画像を回転させた角度)も含まれています。この情報は、カメラの向き等によって画像が本来意図するものと違う回転/鏡像でJPEGファイルに保存される事を示すメタデータとしての値フィールドです。
EXIF情報の利用
画像をアップロードしたりするWEBアプリを作成する際に、EXIF情報を意識せずに作成した場合、画像が意図しない向きで表示される可能性があります。そのため、画像ビューアによってOrientationが無視される事もあるので、世の中の画像アップローダはOrientation補正して画像を保存する事が多いです。
PythonでのEXIF情報の利用
Pythonでは、PIL(Pillow)ライブラリを使用して画像のEXIF情報を取得し、それに基づいて画像を回転させることができます。以下に、EXIF情報のOrientationタグを考慮して画像を回転させるPythonコードの一例を示します。
from PIL import Image
def rotate_image_according_to_exif(img_path):
img = Image.open(img_path)
exif = img._getexif()
orientation = exif.get(0x0112, 1) # 0x0112 is the tag number for Orientation
convert_image = {
1: lambda img: img,
2: lambda img: img.transpose(Image.FLIP_LEFT_RIGHT), # 左右反転
3: lambda img: img.transpose(Image.ROTATE_180), # 180度回転
4: lambda img: img.transpose(Image.FLIP_TOP_BOTTOM), # 上下反転
# Add other cases if necessary
}
img = convert_image[orientation](img)
return img
この関数rotate_image_according_to_exif
は、画像ファイルのパスを引数に取り、その画像のEXIF情報のOrientationタグに基づいて画像を適切に回転させた結果を返します。このようにPythonを使用してEXIF情報を利用することで、画像を正しく表示することが可能になります。
まとめ
PythonでEXIF情報を利用することで、画像の回転情報を取得し、それに基づいて画像を適切に回転させることができます。これにより、画像が意図しない向きで表示される問題を解決することができます。画像を扱うPythonプログラムを作成する際には、EXIF情報の利用を検討してみてください。