内存高效的android jpeg转换

时间:2012-08-27 15:29:01

标签: android image bitmap jpeg

我的代码如下:

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

1 个答案:

答案 0 :(得分:0)

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

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