how to make the color image to black and white in Android

后端 未结 2 1870
自闭症患者
自闭症患者 2021-01-17 23:46

I wanted to know the way to convert the color image (which i am downloading from net) to black and white when i am displaying it to the user in android. can anybody found

相关标签:
2条回答
  • 2021-01-17 23:49

    Hi you can make the image black n white using contrast.

    See the code..

    public static Bitmap createContrast(Bitmap src, double value) {
        // image size
        int width = src.getWidth();
        int height = src.getHeight();
        // create output bitmap
        Bitmap bmOut = Bitmap.createBitmap(width, height, src.getConfig());
        // color information
        int A, R, G, B;
        int pixel;
        // get contrast value
        double contrast = Math.pow((100 + value) / 100, 2);
    
        // scan through all pixels
        for(int x = 0; x < width; ++x) {
            for(int y = 0; y < height; ++y) {
                // get pixel color
                pixel = src.getPixel(x, y);
                A = Color.alpha(pixel);
                // apply filter contrast for every channel R, G, B
                R = Color.red(pixel);
                R = (int)(((((R / 255.0) - 0.5) * contrast) + 0.5) * 255.0);
                if(R < 0) { R = 0; }
                else if(R > 255) { R = 255; }
    
                G = Color.red(pixel);
                G = (int)(((((G / 255.0) - 0.5) * contrast) + 0.5) * 255.0);
                if(G < 0) { G = 0; }
                else if(G > 255) { G = 255; }
    
                B = Color.red(pixel);
                B = (int)(((((B / 255.0) - 0.5) * contrast) + 0.5) * 255.0);
                if(B < 0) { B = 0; }
                else if(B > 255) { B = 255; }
    
                // set new pixel color to output bitmap
                bmOut.setPixel(x, y, Color.argb(A, R, G, B));
            }
        }
    
        return bmOut;
    }
    

    Set the double value to 50 on mathod call. For Example createContrast(Bitmap src, 50)

    0 讨论(0)
  • 2021-01-18 00:12

    Use the built-in methods:

    public static Bitmap toGrayscale(Bitmap srcImage) {
    
        Bitmap bmpGrayscale = Bitmap.createBitmap(srcImage.getWidth(), srcImage.getHeight(), Bitmap.Config.ARGB_8888);
    
        Canvas canvas = new Canvas(bmpGrayscale);
        Paint paint = new Paint();
    
        ColorMatrix cm = new ColorMatrix();
        cm.setSaturation(0);
        paint.setColorFilter(new ColorMatrixColorFilter(cm));
        canvas.drawBitmap(srcImage, 0, 0, paint);
    
        return bmpGrayscale;
    }
    
    0 讨论(0)
提交回复
热议问题