【问题标题】:How to convert normal bitmap to monochrome bitmap android如何将普通位图转换为单色位图android
【发布时间】:2020-01-24 20:57:13
【问题描述】:

您好,我想在 Android 中将普通位图转换为单色位图,我该怎么做。我试图在网上寻找,但只能找到

Bitmap bmpMonochrome = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmpMonochrome);
ColorMatrix ma = new ColorMatrix();
ma.setSaturation(0);
Paint paint = new Paint();
paint.setColorFilter(new ColorMatrixColorFilter(ma));
canvas.drawBitmap(bmpSrc, 0, 0, paint);

我想传递一个位图,然后赌一个单色位图的字节数组。

  public static byte[] toBytes(Bitmap bitmap) {

  }

请指点或链接

R

【问题讨论】:

    标签: java android bitmap monochrome


    【解决方案1】:

    您可以使用 ColorMatrix 类来实现:

    ImageView imgview = (ImageView)findViewById(R.id.imageView_grayscale);
    imgview.setImageBitmap(bitmap);
    
    // Apply grayscale filter
    ColorMatrix matrix = new ColorMatrix();
    matrix.setSaturation(0);
    ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix);
    imgview.setColorFilter(filter);
    

    gist 介绍了另一个 ClorMatrix 方法示例。

    【讨论】:

      【解决方案2】:

      根据你的代码 sn-p:

      public static byte[] toMonochromeByteArray(Bitmap bitmap) {
          final Bitmap result = Bitmap.createBitmap(
                  bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig());
      
          final Canvas canvas = new Canvas(result);
          final ColorMatrix saturation = new ColorMatrix();
          saturation.setSaturation(0f);
      
          final Paint paint = new Paint();
          paint.setColorFilter(new ColorMatrixColorFilter(saturation));
          canvas.drawBitmap(bitmap, 0, 0, paint);
      
          final ByteArrayOutputStream stream = new ByteArrayOutputStream();
          final Bitmap.CompressFormat compressFormat =
                  bitmap.hasAlpha() ? Bitmap.CompressFormat.PNG : Bitmap.CompressFormat.JPEG;
          result.compress(compressFormat, 100, stream);
          result.recycle();
      
          return stream.toByteArray();
      }
      

      【讨论】:

      • 您好 Akaki,感谢您的回复,我尝试了您的方法,但格式仍然与有效的徽标不一样。 logo哪种作品 - 字节数组看起来像是这样 - getlogobitmap - array 0x42 0x4d 0x0x00 0x00 0x00 0x00 0x00 0x3e 0x00 0x00 0x00 0x28 0x00 0x00 0x28 0x00 0x00 0x00签名位图看起来不起作用看起来像这个 - 签名 - 阵列0xff 0xd8 0xf 0x0 0x4A 0x46 0x49 0x46 0x00 0x01 0x01 0x00 0x00 0x01 0x00 0x01 0x00 让我知道您是否希望两者的完整字节数组给出更好的主意,您可以在它们之间做出任何区别
      猜你喜欢
      • 2012-03-11
      • 2023-03-17
      • 2014-05-30
      • 2022-09-28
      • 2011-12-20
      • 1970-01-01
      • 2015-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多