androidでカメラ撮影をするとどうしても横向きになってしまいますよね。
通常ならexifinterfaceでuriからexif情報を抽出してexifinterfaceに用意されているタグを
使って向きを変えることができるのですが、成功までに一癖あったので備忘録として
残していきます。
まず、特殊なことはいっさいせずexifinterfaceとinputStreamを初期化し
inputStreamにexif情報の入ったuriファイルを格納します。
この段階でExifInterface.TAG_ORIENTATIONを書き込めば画像の向き情報を
取得できるのですが、デバッグしてみるとなんと0が返ってくるという奇妙な事態に。
onActivityresultから返ってくるintentはnullってわかっていたのであえてメンバ変数Uriから
取り出していたのですが、こちらは特に何も加工していないUriのうえ
関係はないもよう。ではどこで躓いているかというと、どうやらin.close()を
つけ忘れていたのが原因っぽいです。という訳で追加
</pre> InputStream in; in = getContentResolver().openInputStream(uri); ExifInterface ex = new ExifInterface(in); int orientation = ex.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED); in.close(); <pre>
ムダな時間をすごしましたが晴れてorientationの向きを取得することに成功しました。
in.close()でデータを保持しないとorientation情報が消えてしまうみたいなので
これからまた使うときは心がけたいと思います、はい。