スマホで撮った写真が横を向いてしまう(Python Kivyの取説・使い方 番外編)
はじめに
前回の画面のスライドで、なぜか縦向きの写真が横を向いてしまう問題を調べていきます。
スマホで撮った写真などは、画像ファイルの中に撮影した日付、位置情報、写真の向きなどのデータが格納されています。そのデータのことを「Exif」というらしいです。
今回はPILモジュールを使用して「Exif情報の取得」と「画像の回転」を行います。
Exif情報のOrientationが「6」のとき、写真は左に90度向いてしまいます。
(Orientationが「8」のときは右に90度、Orientationが「3」のときは180度回転してしまうようです)
プログラムのコード
from PIL import Image from PIL.ExifTags import TAGS #画像ファイルを開く image = Image.open('./image/IMG_0.jpg') #exif情報を取得 exif = image._getexif() #exif情報からOrientationを取得 exif_data = [] for id, value in exif.items(): if TAGS.get(id) == 'Orientation': tag = TAGS.get(id, id),value exif_data.extend(tag) print(exif_data) #image.show() input(exif_data) if exif_data[1] == 3: #180度回転 image = image.transpose(Image.ROTATE_180) elif exif_data[1] == 6: #270度回転 image = image.transpose(Image.ROTATE_270) elif exif_data[1] == 8: #90度回転 image = image.transpose(Image.ROTATE_90) image.show()
まとめ
とりあえず画像の回転で縦向きに直すことができました。詳しい解説は省きますがこれでkivyを使って写真の向きを正しく表示できそうです。
保存ファイル
lesson64.py
test.kv
文責:Luke