简体   繁体   English

如何将普通 bitmap 转换为单色 bitmap android

[英]How to convert normal bitmap to monochrome bitmap android

Hi I want to convert a normal bitmap to monochrome bitmap in Android, how can I do that.嗨,我想在 Android 中将普通的 bitmap 转换为单色 bitmap,我该怎么做。 I tried to look online but could only find我试图在网上查找,但只能找到

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

I want to pass aa bitmap and in return bet a Byte array of the monochrome bitmap.我想传递一个 bitmap 并作为回报赌单色 bitmap 的字节数组。

  public static byte[] toBytes(Bitmap bitmap) {

  }

Any pointers or links please任何指针或链接请

R R

You can use the ColorMatrix calss to achieve this:您可以使用 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);

Another example of ClorMatrix approach is covered in this gist .要点介绍了另一个 ClorMatrix 方法示例。

Based on your code snippet:根据您的代码片段:

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();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM