我试图用这样的代码缩小图像:
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手机和模拟器的问题。
我已经详细说明了图片大小,禁用了我的应用程序的一些相对昂贵的内存操作等,但没有任何帮助。
有没有人知道原因是什么?谢谢。
答案 0 :(得分:0)
你应首先解码Bounds,在JustDecodeBounds中使用BitmapFactory.Options;
然后计算出适当的比例,
最后,您将预分频图像(使用BitmapFactory.Options inSampleSize)加载到内存中以进行缩放工作。
样品很容易找到。
答案 1 :(得分:0)
您的图片分辨率很高。对于你我想告诉你,在android 1px = 4byte的内存。
通过这个你可以想象它花了多少。
检查此链接是否有效加载大位图
http://developer.android.com/training/displaying-bitmaps/index.html