Androidの画像保存をやってみた

Androidで画像を端末に保存したときにやったこととはまったこと。
String型で『data:image/jpeg;base64,・・・』という生データを端末のギャラリーで見えるようにするまで。

保存場所を決める

/sdcard/ やら /mnt/sdcard/ 以下に保存するらしい。
例えば、/mnt/sdcard/MyApp/20120130210000.jpg みたいな感じ。

  1. SDカードがマウントされていれば、画像を保存するディレクトリを取得します。
  2. ディレクトリがまだなければ作ります。
  3. もし、SDカードがマウントされていなければ使用できるディレクトリを探します。
  4. ディレクトリが決まったら、ディレクトリのパス情報を元にファイル名を足して保存場所を決定します。

また、SDカードへの書き込みにはマニフェストで許可してあげる必要があります。
AndroidManifest.xmlに追記します。

画像データを書き込み可能なフォーマットに変換する

Androidの画像保存では、画像データをBitmapオブジェクトに変換する必要があります。

  1. データの先頭についている『data:image/jpeg;base64,』を取ります。
  2. Base64でデコードします。
  3. Bitmapオブジェクトに変換します。

Base64はAndroidSDKに入ってるのでそれを使います。
ここで、1と2をしなければいけないことに気づかず結構はまりました。
参考. http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=46376&forum=12

保存する

ここまでできればあとは保存するだけです。
ただし、Androidは画像を保存しただけではギャラリーでみれないらしく、別途ギャラリーへの登録処理が必要です。

これで端末に画像を保存して、見れるようになります。

参考.

http://goo.gl/yiE6m

http://dividebyzero-ksz.blogspot.com/2010/11/sd.html

エラーハンドリングがお粗末なのはすいません。

おわり。

Pocket

Posted in Android.

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">