2012-02-29 94 views
4

我只是想將此彩色圖像轉換爲黑白圖像,但我不知道如何做到這一點。我只知道如何獲得像素。你可以幫我嗎?如何在Java中將圖像從顏色轉換爲黑白(灰度)

private BufferedImage image; 
    private int[][]rgbValue;  

    public void setRgbValue(BufferedImage image){ 
     int width = image.getWidth(); 
     int height = image.getHeight(); 

     rgbValue = new int[width*height][3]; 
     int counter = 0; 
     for(int i=0 ; i<width ; i++){ 
      for(int j=0 ; j<height ; j++){ 
       int color = image.getRGB(i, j); 
       int red = (color & 0x00ff0000) >> 16; 
       int green = (color & 0x0000ff00) >> 8; 
       int blue = (color & 0x000000ff); 
       rgbValue[counter][0] = red; 
       rgbValue[counter][1] = green; 
       rgbValue[counter][2] = blue; 
       counter++;   
      }   
     } 
    } 

如何將此代碼與此代碼結合使用?

temp = red; 
    red = green; 
    green = blue; 
    blue = temp; 
    temp = 0; 
    rgb[i] = ((red << 16)) + ((green << 8)) + (blue); 
    if(rgb[i] <= 0x670000){ 
     rgb[i] = 0x000000; 
    } else { 
     rgb[i] = 0xffffff; 
    }  

回答

7

使用的Java2D ColorConvertOp.filter(..)到BufferedImage的轉換顏色與指定ColorSpace

BufferedImage bi = null; //Your BufferedImage goes here. null for compiler 
ColorConvertOp op = 
    new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY), null); 
op.filter(bi, bi); 
+0

如果我錯過了這堆項目的一些知識,也可能是它就像我懷念的世界戰爭2是在這一天的士兵。謝謝。 – Dipak 2013-08-03 19:24:25

+0

此代碼不會將文件轉換爲黑白文件。另外,它將文件大小增加到10倍。任何建議? – KayV 2016-12-09 06:35:50

相關問題