【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で書き込むことで

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

 

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

 

 

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

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

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

CTR IMG