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フォーマット)
現在の方法で正しいか間違っているか教えてください。もし私がいたら、別の方法を提案してください。
なぜあなたは 'アルファ'に気を配っていますか? – TheBronx