2013-02-13 13 views
8
public class BlackWhite { 

    public static void main(String[] args) 
    { 
     try 
     { 
     BufferedImage original = ImageIO.read(new File("colorimage")); 
     BufferedImage binarized = new BufferedImage(original.getWidth(), original.getHeight(),BufferedImage.TYPE_BYTE_BINARY); 

     int red; 
     int newPixel; 
     int threshold =230; 

      for(int i=0; i<original.getWidth(); i++) 
      { 
       for(int j=0; j<original.getHeight(); j++) 
       { 

        // Get pixels 
        red = new Color(original.getRGB(i, j)).getRed(); 

        int alpha = new Color(original.getRGB(i, j)).getAlpha(); 

        if(red > threshold) 
        { 
         newPixel = 0; 
        } 
        else 
        { 
         newPixel = 255; 
        } 
        newPixel = colorToRGB(alpha, newPixel, newPixel, newPixel); 
        binarized.setRGB(i, j, newPixel); 

       } 
      } 
      ImageIO.write(binarized, "jpg",new File("blackwhiteimage")); 
     } 
     catch (IOException e) 
     { 
       e.printStackTrace(); 
     }  
    } 

    private static int colorToRGB(int alpha, int red, int green, int blue) { 
      int newPixel = 0; 
      newPixel += alpha; 
      newPixel = newPixel << 8; 
      newPixel += red; newPixel = newPixel << 8; 
      newPixel += green; newPixel = newPixel << 8; 
      newPixel += blue; 

      return newPixel; 
     } 
} 

私は白黒出力画像を取得しましたが、画像をズームしていくらかの灰色領域を発見しました。出力画像に黒または白の色しか含まないようにしたい。カラー画像を純粋な白黒画像に変換する方法(0-255フォーマット)

現在の方法で正しいか間違っているか教えてください。もし私がいたら、別の方法を提案してください。

+0

なぜあなたは 'アルファ'に気を配っていますか? – TheBronx

答えて

16

イメージをカラーから白黒に正しく変換しています。ただし、出力をJPEGとして保存すると、lossy compressionの結果としていくつかの色が作成されます。

出力をPNG(またはJPEG以外)に保存するだけで、出力は期待どおりに白黒になります。あなたはPNGとして保存バイナリイメージを持っている場合

ImageIO.write(binarized, "png",new File("blackwhiteimage")); 

は例えば、ヒストグラムは(のみ厳密に黒と白の画素)のようなものになります

PNG histogram

と同じ画像の場合についてあなたは、ヒストグラムに白と黒の色に近いいくつかのピクセルが現れ始めることを見ることができ、JPEGとして保存

JPEG histogram

+0

または、gif、tif、bmp、... – Junuxx

+0

はい、「JPEG」以外何も例を示しませんでした – iTech

+0

ありがとうございます:) – Yogesh

関連する問題