【android】ContentValuesでorientationを操作する

asaba 著者:asaba

【android】ContentValuesでorientationを操作する

androidは、撮影した画像を即時にファイルに保存できないので、

(時間が経ってから・若しくは再起動で保存される)開発側でcontentValue

を用意してfileの場所を登録して書き込む必要があります。

androidで画像を保存するときはこのcontentValueに用意されている

putメソッドを使うことでandroidのギャラリーにすぐに使えるようになります。

 

このライブラリを使ってandroidのデータベースに問い合わせるのですが、

こちら側ではカラムとデータを設定するだけでsqlliteでやるような

sql操作は特に何もしないのでsqlをあまり触ったことのない方でも

簡単に書くことができるのでおすすめです。が、contentValueが

受け取るのは何も加工していないファイルになるので、当然このまま

保存しても期待した結果にならない時もあります。

 

例えば、bitmapをexifIntefaceを使ってactivityに表示したのに

contentValueで経由して保存した写真見ると横向きになっていたりします。

これは、exifInterfaceを経由して向きを回転させる前のファイルを

使用せず、生成したファイルオブジェクトをそのまま送っているためです。

 

一応bitmapをbitmap->uri->fileと分解して正しい向きに向かせられるのですが

これだとexif情報が全部抜けてしまい画像としては内容がなさすぎて

使い物になりません。

 

かくいう自分もこのギャラリー内の画像のexif処理にハマっていたのですが、

contentValueではputからorientationを操作できることを知ったので

こちらを使うことにしました。

カラムとデータに設定する方法は以下の通りです。

 


contentValues.put(MediaStore.Images.Media.ORIENTATION, 90);
contentValues.put(MediaStore.Images.Media.LATITUDE, replaceLati);
contentValues.put(MediaStore.Images.Media.LONGITUDE, replaceLong);

 

このように、カラムで修正したいexif情報をMediaStoreで書き込むことで

ファイルに保存される写真にデータを追加することができます。

 

これらの存在を今日の今日まで知らずに使っていたのが怖い・・・。

 

 

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

著者について

asaba

asaba author

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