【androidjava】exifinterfaceでorientationが取得できなかった時の対処法

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情報が消えてしまうみたいなので

これからまた使うときは心がけたいと思います、はい。

 

 

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG