Java RGB Color Convert To rgb2bilevel(int[] rgb)

Here you can find the source of rgb2bilevel(int[] rgb)

Description

rgbbilevel

License

Open Source License

Declaration

public static byte[] rgb2bilevel(int[] rgb) 

Method Source Code

//package com.java2s;
/**/*  w w w. jav a2  s.  com*/
 * Copyright (c) 2014-2015 by Wen Yu.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Any modifications to this file must keep this entire header intact.
 *
 * Change History - most recent changes go on top of previous changes
 *
 * IMGUtils.java
 *
 * Who   Date       Description
 * ====  =========  ==============================================================
 * WY    03Feb2015  Added createThumbnail() to create a thumbnail from an image
 * WY    27Jan2015  Added createThumbnail8BIM() to wrap a BufferedImage to _8BIM
 * WY    22Jan2015  Factored out guessImageType(byte[])
 * WY    24Dec2014  Rename CMYK2RGB() to iccp2rgbRaster()
 * WY    17Dec2014  Bug fix for rgb2bilevelDither() to bypass transparent pixels
 * WY    03Dec2014  Bug fix for getRGB() to fall back to BufferedImage.getRGB()
 * WY    26Nov2014  Changed rgb2bilevel() to take into account transparency
 * WY    03Nov2014  Added CMYK2RGB() to convert CMYK raster to RGB raster
 * WY    22Sep2014  Added guessImageType() to auto detect image type
 * WY    13Aug2014  Added RGB2YCCK_Inverted() to support YCCK JPEG
 * WY    05May2014  Added getRGB() and getRGB2() to replace BufferedImage.getRGB()
 */

public class Main {
    public static byte[] rgb2bilevel(int[] rgb) {
        // RGB to gray-scale
        byte[] pixels = new byte[rgb.length];
        int sum = 0;

        for (int i = 0; i < rgb.length; i++) {
            if ((rgb[i] >>> 24) < 0x80)
                pixels[i] = (byte) 0xff; // Dealing with transparency color
            else
                pixels[i] = (byte) (((rgb[i] >> 16) & 0xff) * 0.2126 + ((rgb[i] >> 8) & 0xff) * 0.7152
                        + (rgb[i] & 0xff) * 0.0722);
            sum += (pixels[i] & 0xff);
        }

        // Calculate threshold
        int threshold = (sum / pixels.length);

        // Reduce gray-scale to BW - we assume PhotoMetric.WHITE_IS_ZERO
        for (int l = 0; l < pixels.length; l++) {
            if ((pixels[l] & 0xff) <= threshold) {
                pixels[l] = 1; // Black
            } else {
                pixels[l] = 0; // White
            }
        }

        return pixels;
    }
}

Related

  1. convertRGBtoHSL(int r, int g, int b)
  2. convertRGBtoHSV(float[] rgb, float[] hsv)
  3. convertRGBtoYIQ(float[] rgb, float[] yiq)
  4. rgb24FloatArray(float[] array, int rgb24)
  5. rgb2arr(final int color, final int[] argbarr)
  6. rgb2gray(int r, int g, int b)
  7. rgb2grayscale(int[] rgb, int imageWidth, int imageHeight)
  8. rgb2grayscaleA(int[] rgb)
  9. rgb2Hex(int rgb)