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

asaba 著者:asaba

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

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

 

 

  • この記事いいね! (0)

著者について

asaba

asaba author

好きなもの:RPG、チョコミント 少しずつ頑張ります。