我的代码如下:
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() 之前,内存中存在以下内容:
- 原始未压缩的二进制数据(data)。
- 解码后的位图 (bm) 及其所有像素数据。
- 压缩的二进制数据(内部存储在 baos 中)。
基础 Android 中是否有任何功能可以在不创建中间位图对象的情况下执行此解码/编码步骤?还是我不必要地担心?