【问题标题】:Converting Bitmap in memory to Bitmap with Bitmap.Config.RGB_565使用 Bitmap.Config.RGB_565 将内存中的位图转换为位图
【发布时间】:2013-02-10 02:53:43
【问题描述】:

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

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

【问题讨论】:

    标签: android bitmap rgb bitmapfactory


    【解决方案1】:

    你也可以试试这个:

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

    来自Bitmap.copy()的documentation

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

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

    【讨论】:

    • 如果您想保持透明度,请务必改用 Config.ARGB_8888
    【解决方案2】:

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

    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 一起使用,您可以进行各种附加转换,例如旋转、拉伸等。

    【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-21
      • 2011-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多