私のコードは次のとおりです。
public static byte[] compress(byte[] data, CompressFormat format, int quality)
{
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
final Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length);
try {
bm.compress(format, quality, baos);
} finally {
bm.recycle();
}
return baos.toByteArray();
}
元画像のサイズが大きいとメモリ使用量が気になります。compress() が呼び出された後、recycle() が呼び出される前に、以下がメモリ内に存在します。
- 元の圧縮されていないバイナリ データ (データ)。
- すべてのピクセル データを含むデコードされたビットマップ (bm)。
- 圧縮されたバイナリ データ (baos 内に内部的に保存されます)。
中間の Bitmap オブジェクトを作成せずにこのデコード/エンコード手順を実行できるベース Android の機能はありますか? それとも私は不必要に心配していますか?