图像缩放失败的原因是什么?

时间:2015-03-09 23:37:26

标签: android image-processing

我试图用这样的代码缩小图像:

        bmp = BitmapFactory.decodeFileDescriptor(getContentResolver().openAssetFileDescriptor(imageUri, "r").getFileDescriptor());
        Pair<Integer, Integer> dims = getScaledDimensions(longerSide, bmp.getWidth(), bmp.getHeight());
        Bitmap smallBmp = Bitmap.createScaledBitmap(bmp, dims.first, dims.second, true);
        ByteArrayOutputStream bastream = new ByteArrayOutputStream();
        smallBmp.compress(Bitmap.CompressFormat.JPEG, 85, bastream)
        barray = bastream.toByteArray();

然而,对于更大的图像(8px相机照片缩放到1920x1440),输出被损坏&#34;如下所示(几个像素后跟白色区域)。小图像有时正确处理。这是Nexus 5,5.0.1手机和模拟器的问题。

我已经详细说明了图片大小,禁用了我的应用程序的一些相对昂贵的内存操作等,但没有任何帮助。

有没有人知道原因是什么?谢谢。

Image wrongly scaled

2 个答案:

答案 0 :(得分:0)

将大图像读入内存是一件可怕的事情。

你应首先解码Bounds,在JustDecodeBounds中使用BitmapFactory.Options;

然后计算出适当的比例,

最后,您将预分频图像(使用BitmapFactory.Options inSampleSize)加载到内存中以进行缩放工作。

样品很容易找到。

答案 1 :(得分:0)

您的图片分辨率很高。对于你我想告诉你,在android 1px = 4byte的内存。

通过这个你可以想象它花了多少。

检查此链接是否有效加载大位图

http://developer.android.com/training/displaying-bitmaps/index.html