在安卓系统中,CreateScaledBitmap会返回一个空白图像。

问题描述 投票:2回答:1

我一直在努力按照这个答案 https:/stackoverflow.coma85277451352702。为了解决一些内存问题,我用了一个代码来创建一个缩放的位图,而不是只在画布上画一个位图。

下面是我的代码。

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)?

android bitmap android-canvas
1个回答
0
投票

郑重声明,当我试图调整某些高分辨率灰度PNGs的大小时,我也遇到了同样的问题:它们被正确地加载了 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);
© www.soinside.com 2019 - 2024. All rights reserved.