Я написал код Java, чтобы изменить все красные значения черно-белого изображения на 255, поэтому выход будет красным. Но его не красный, вместо этого он выводит более яркое изображение. Что я сделал не так?Java, изображение меняется на неправильные значения rgb
File bwgFile = new File("X:/Java/Documents/NetBeansProjects/colour/input/bwg.png");
BufferedImage bwgImage = ImageIO.read(bwgFile);
int width=bwgImage.getWidth();
int height=bwgImage.getHeight();
for(int w=0; w<width; w++){
for(int h=0; h<height; h++){
int pixel = bwgImage.getRGB(w,h);
Color bwg = new Color(pixel);
int c=bwg.getRed();
Color red = new Color(255,c,c);
int cpixel = red.getRGB();
bwgImage.setRGB(w,h,cpixel);
}
}
ImageIO.write(bwgImage, "png", new File("X:/Java/Documents/NetBeansProjects/colour/output/c.png"));
EDIT: Я обнаружил, что проблема, по-видимому, когда вход является градациях серого изображения он будет пытаться сделать выводить оттенки серого изображения, а тем самым делая его более темным когда синий и зеленый цвета удаляются и становятся ярче, когда добавляется красный цвет. не используя изображение в оттенках серого в качестве фиксированного ввода.
Потому что цветные каналы указывают яркость цвета? У вас все еще есть свой зеленый и синий канал. Если вы все установили их на 255, вы получите белый цвет. – Neijwiert
Я не устанавливаю их всех в 255, только красный. – ergoforce
Если вы посмотрите на выходное изображение, вы увидите, что изображение не белое. (Я включил ссылки на изображения в случае, если вы не заметили.) – ergoforce