CreateScaledBitmap在android中返回一个空白图像

时间:2013-12-29 05:28:15

标签: android bitmap android-canvas

我一直在尝试按照这个回答https://stackoverflow.com/a/8527745/1352702 ,创建一个缩放的位图,而不是仅仅在画布上绘制位图,以解决一些内存问题。

这是我的代码,

BitmapFactory.Options options = new BitmapFactory.Options();
options.inPurgeable = true;
options.inInputShareable = true;
options.inSampleSize = 8;

Bitmap s000 = BitmapFactory.decodeResource(getResources(), getResources().getIdentifier("zoo" + i, "drawable", getPackageName()));
int X = c.getWidth()/2 - s000.getWidth()/2 ;
int Y = c.getHeight()/2 - s000.getHeight()/2 ;
Bitmap.createScaledBitmap(s000, s000.getWidth(), s000.getHeight(), true);

但它只是创建一个空白屏幕。 另外如何在createScaledBitmap方法中传递图像的位置参数(分别为X和Y)?

1 个答案:

答案 0 :(得分:0)

出于记录,在尝试调整某些高分辨率灰度PNG的大小时,我遇到了同样的问题:BitmapFactory.decodeResource正确地加载了它们,然后Bitmap.createScaledBitmap将它们变成了黑色图片。

事实证明,在API 26+上,Android不知道如何处理未正确检测到ColorSpace(“未知”)的位图,并且弄乱了调整大小。

我的应用程序的工作解决方案是在加载时定义首选的ColorSpace:

BitmapFactory.Options options = new BitmapFactory.Options();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
            options.inPreferredColorSpace = ColorSpace.get(ColorSpace.Named.SRGB);
bitmap = BitmapFactory.decodeXXX(<whatever method you fancy>, options);