Как преобразовать изображение из цветного в черно-белое (в оттенках серого) в Java - PullRequest
4 голосов
/ 29 февраля 2012

Я просто хочу преобразовать это цветное изображение в черно-белое, но я не знаю, как это сделать.Я просто знаю, как получить пиксель.Вы можете мне помочь?

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

Ответы [ 2 ]

7 голосов
/ 29 февраля 2012

Используйте 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 голосов
/ 29 февраля 2012
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...