ビットマップの配列をダウンロードし、少し変更してから SD カードに保存する最良の方法を探しています。
ByteArrayOutputStream
イメージをデバイスの RAM にロードするため、使用するのは悪い考えだと聞いたことがあります。代わりに、おそらく a BufferedInputStream
andFileOutputStream
のようなものを使用することになっていますが、この方法を使用して保存する前にビットマップを変更する方法がわかりません。
ありがとう
ビットマップの配列をダウンロードし、少し変更してから SD カードに保存する最良の方法を探しています。
ByteArrayOutputStream
イメージをデバイスの RAM にロードするため、使用するのは悪い考えだと聞いたことがあります。代わりに、おそらく a BufferedInputStream
andFileOutputStream
のようなものを使用することになっていますが、この方法を使用して保存する前にビットマップを変更する方法がわかりません。
ありがとう
以下を使用してビットマップを作成できますInputStream
。
Bitmap bm = BitmapFactory.decodeStream(inputStream);
そして、Bitmap
それらを処理して保存した後、次を使用する必要があります。
bm.recycle();
bm = null;
避けるためにOutOfMemoryExceptions
。
編集:
ファイルに書き込む場合:
OutputStream fos=new BufferedOutputStream(new FileOutputStream(filePath));
byte buf[]=new byte[1024];
int len;
while((len=is.read(buf))>0)
fos.write(buf,0,len);
fos.close();
is.close();
答えは気に入らないでしょう: できません (少なくとも、Android フレームワークではそうではありません)。
唯一のオプションは、メモリに収まるように画像を縮小することです。recycle()
定期的にとを呼び出しSystem.gc()
て、できるだけ早くメモリを解放します。