
AndroidSDKを使ってソフトの開発をしています。Bitmap形式の画像をそのまま圧縮しないでファイルに保存しようとしているのですが、その方法が分かりません。
今やろうとしていることは、Bitmap画像をそのままバイナリデータに変換して、バイナリデータとして保存しようとしているのですが、バイナリデータに変換する方法が分かりません。どなたか、知っている方がいましたら、教えてください。
Webを検索すると、JPEGなどに変換してからファイル書き込みをする方法が見つかりますが、変換なしの方法は見当たりません。ぜひ教えて頂ければ幸いです。
No.2ベストアンサー
- 回答日時:
失礼しました、java環境ですとBitmap.compressがあります。
http://isann.blog2.fc2.com/blog-entry-239.html
特に言及しなかったのですが、Bitmapクラスで扱う画像データは生の画像データで、ファイル形式のBMPとは異なります。
上のページは、ファイルフォーマットを指定してOutputStreamに「流し込む」操作です。
残念ながらBitmap.CompressFormatに定数指定されているのはJPEGとPNGしかありません。
JPEGだと非可逆圧縮のため画質が少々劣化するので、画質優先ならPNGを選択しましょう。
もう一つの注意点は、アプリケーションが読み書きできるディレクトリが限られると言うことです。
一つ目は/data/data/<パッケージ名>/files/で、各パッケージの「データ」として扱われます。この領域は(root化後に書き込み可能でマウントしない限り)他のパッケージからはアクセスできないようになっています。
二つ目は、/sdcard下または/mnt/sdcard下です。ここにはあらゆるアプリケーションがアクセスできます。この2ディレクトリは連動しているため、通常区別する必要はありません。
三つ目は外部ストレージですが、これは端末メーカーによってパスが異なりますのできちんとこのページを参考に指定してください。
http://y-anz-m.blogspot.jp/2010/08/android_31.html
また、SHARP端末等外部ストレージの内容が/sdcard下に混合して扱われてしまう場合があります。
また直ぐに、ご回答を頂き有難うございます。
Bitmapをそのまま保存する方法が無ければ、Bitmap.compressを使ってPNG形式で保存するのが良さそうですね。
それにしても、Bitmapのような構造体(Javaではクラスですか)のデータを、そのままフィル保存する方法があると便利なんですが。どうしてそのような機能が無いのか不思議に思います。
No.1
- 回答日時:
何か勘違いをされているようですが、JPEGもBitmapも元々バイナリデータです。
従って「バイナリに変換」ではなく「バイナリ(正確にはバイトデータ)の抽出」というのが正しいです。
ただし、単純なファイルの入出力であれば、BitmapクラスのコンストラクタやSaveメソッドで実現可能です。
Saveメソッドでは保存するファイル形式も指定できますが、端末によってGDI+エンコーダの有無が異なってきますので、殆どの端末で扱うことのできるJPEGでの保存がサンプルコードとして取り上げられることが多いようです。
参考URL:http://www.atmarkit.co.jp/fdotnet/dotnettips/020 …
この回答への補足
早速のご回答有難うございます。
参考に示していただいたURLのWEBに関しては、質問を投稿する前に試してみました。このWEBに載っている方法は、.NETのC#版のやり方を示したものです。.NETC#にはSaveという便利なメソッドが用意されています。ところが、AndroidSDKには残念ながら、Saveがありません。
Bitmapデータをそのままファイリングして、後でそのファイルを同じプログラムで読み込むことをしたい。単にこれだけなのですが、Androidのファイルでは簡単にできないのでしょうか。そこで止む無く、バイナリ変換ではなく抽出(ご指摘有難うございます)をして、バイナリファイルに書き込むことができないかと考えたわけです。
何か良い方法があれば、また教えていただければありがたいのですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Aloha Browser でダウンロード...
-
Android端末でBitmap画像そのま...
-
Windows10のアプリと機能の使用...
-
アンドロイドスマートフォンGma...
-
iPhoneでWordを使って保存した...
-
外付けSSDでPCを高速化できるか
-
ブルーレイディスク内にある動...
-
iPhoneストレージの容量が写真...
-
今時、CD-R Audio メディアを使...
-
d払いのアプリ 起動しようとす...
-
外付けSSD Windowsが認識するの...
-
自分のスマホSHV48とテレビを接続
-
私のパソコン。SSD500GB。使用...
-
ローカルディスクとGoogleドラ...
-
外付けssdの見た目容量と内容量...
-
偽装容量SDカードを元の正しい...
-
2.5インチと3.5インチHDDの性能...
-
d3drm.dllがDLできない
-
スマホ操作中の画面をリアルタ...
-
Ubuntuに必要なSSDの容量について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Aloha Browser でダウンロード...
-
mp4ファイルの「メディアの作成...
-
cdaファイルをアンドロイドにコ...
-
itunes
-
ローカルファイルのhtmlを作っ...
-
AndroidスマホのmicroSDカード...
-
アンドロイドスマホのデータがU...
-
AngelBrowserのブックマークの移行
-
音声ファイルをplay musicで聴...
-
パソコンのファイル
-
アンドロイドSDカードへの動画...
-
iTunesの音楽ファイルをP701iへ…。
-
OneDriveはローカルに保存され...
-
スマホ本体のringtonesフォルダ...
-
wifiでつながってるAndroid端末...
-
一部mp3ファイルがAndroidスマ...
-
スマホのメディアプレーヤー
-
Nexus7で自炊漫画を読みたいの...
-
Windows10上の各種ファイルをフ...
-
CD を取り込んでパソコンからス...
おすすめ情報