18

我有一个加载的位图,我想将其转换为将配置设置为Bitmap.Config.RGB_565. Bitmap在位图已经加载到内存后,有没有一种简单的方法可以将 a 转换为这个配置?例如,下面我有一个从应用程序资源中解码的位图,但是,我如何将已经加载的转换BitmapRGB_565?我确信这很简单,但是,我对使用位图还很陌生,在网上看了几个小时后,不幸的是我找不到我特别需要的东西。

BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig=Bitmap.Config.RGB_565
bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.myphoto ,options);
4

3 回答 3

32

你也可以试试这个:

Bitmap converted = original.copy(Config.RGB_565, false);

从Bitmap.copy()的文档中:

尝试根据此位图的尺寸制作新位图,将新位图的配置设置为指定的配置,然后将此位图的像素复制到新位图中。如果不支持转换,或者分配器失败,则返回 NULL。

查看本机源代码,您应该可以很好地在Bitmap.Config的任何值之间进行转换。

于 2014-08-15T18:29:05.593 回答
29

我没有对此进行测试,但它应该可以工作:

private Bitmap convert(Bitmap bitmap, Bitmap.Config config) {
    Bitmap convertedBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), config);
    Canvas canvas = new Canvas(convertedBitmap);
    Paint paint = new Paint();
    paint.setColor(Color.BLACK);
    canvas.drawBitmap(bitmap, 0, 0, paint);
    return convertedBitmap;
}

像这样调用方法:

Bitmap convertedBitmap = convert(bitmap, Bitmap.Config.RGB_565);

如果您将 drawBitmap 与 Matrix 一起使用,您可以进行各种附加转换,例如旋转、拉伸等。

于 2013-02-25T03:29:10.017 回答
0

感谢 siliconeagle ,在这里找到了答案https://stackoverflow.com/a/12148450/1364673

解决方案是按照上面的链接示例创建一个具有所需编码的新位图。

于 2013-02-25T03:24:53.917 回答