Eut*_*hro 16 rgb android bitmap bitmapfactory
我有一个加载的位图,我想转换为将配置设置为Bitmap.Config.RGB_565
.Bitmap
在Bitmap已经加载到内存后,是否有一种简单的方法将a 转换为此配置?例如,下面我有一个从应用程序资源解码的位图,但是,我如何将已经加载的转换Bitmap
为RGB_565
?我确定这很简单,但是,我对使用Bitmaps很新,经过几个小时的在线查看,遗憾的是我无法找到我需要的东西.
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig=Bitmap.Config.RGB_565
bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.myphoto ,options);
Run Code Online (Sandbox Code Playgroud)
Ema*_*lin 27
我没有测试过,但它应该工作:
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;
}
Run Code Online (Sandbox Code Playgroud)
调用这样的方法:
Bitmap convertedBitmap = convert(bitmap, Bitmap.Config.RGB_565);
Run Code Online (Sandbox Code Playgroud)
如果将drawBitmap与Matrix一起使用,则可以执行各种其他转换,如旋转,拉伸等.
sa.*_*dow 22
你也可以试试这个:
Bitmap converted = original.copy(Config.RGB_565, false);
Run Code Online (Sandbox Code Playgroud)
从Bitmap.copy()的文档:
尝试根据此位图的尺寸制作新的位图,将新位图的配置设置为指定的位图,然后将此位图的像素复制到新位图中.如果不支持转换,或者分配器失败,则返回NULL.
查看本机源代码,您应该在Bitmap.Config的任何值之间进行良好的转换.