1

我的代码如下:

    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() 之前,内存中存在以下内容:

  1. 原始未压缩的二进制数据(data)。
  2. 解码后的位图 (bm) 及其所有像素数据。
  3. 压缩的二进制数据(内部存储在 baos 中)。

基础 Android 中是否有任何功能可以在不创建中间位图对象的情况下执行此解码/编码步骤?还是我不必要地担心?

4

1 回答 1

0

你别无选择,只能加载我认为的位图。但这不是问题。如果您的图像很大,请在将其加载到内存之前将其缩小。

看看http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

于 2012-08-28T13:45:36.203 回答