Hallo Kollege Programmierer!Java Farbpalette eines Bildes ändern
Ich bin ein Java-Anfänger und ich habe ein Java-Programm, das ein Bild aufnimmt, die unbearbeitete Version anzeigt, es in Graustufen konvertiert und das Bild anzeigt und eine andere Farbpalette auf das Bild anwendet und es dann zeigt. Ich habe Probleme beim Anwenden der Farbpalette auf das Bild, und es nimmt und ändert das gesamte Bild in die Farbe. Wie kann ich verhindern, dass die gesamte Bildfarbe und nur die Farbe des von mir angegebenen Bereichs geändert wird? Es sollte wie folgt ausfallen:
Results should be similar to this
Bitte geben Sie Notizen mit einem beliebigen Code, so kann ich verstehen, was im Programm geschieht.
Und hier ist der Code. Danke, dass du mir geholfen hast!
import java.awt.*;
public class GrayscaleToColor
{
public static void main(String[] args)
{
Picture picture = new Picture("WashingtonMonument.jpg");
picture.show();
Picture picture2 = new Picture("WashingtonMonument.jpg");
picture2.show();
int redValue = 0; int greenValue = 0; int blueValue = 0;
Pixel targetPixel = new Pixel(picture2, 0,0);
Color pixelColor = null;
for(int y=0; y < picture2.getHeight(); y++)
{
for(int x = 0; x < picture2.getWidth(); x++)
{
targetPixel = picture2.getPixel(x,y);
pixelColor = targetPixel.getColor();
redValue = pixelColor.getRed();
greenValue = pixelColor.getGreen();
blueValue = pixelColor.getBlue();
redValue = greenValue = blueValue = (redValue + greenValue + blueValue)/3;
pixelColor = new Color(redValue, greenValue, blueValue);
targetPixel.setColor(pixelColor);
}
}
picture2.write("GrayWashingtonMonument.jpg");
picture2.show();
Picture picture3 = new Picture("WashingtonMonument.jpg");
for(int y=0; y < picture3.getHeight(); y++)
{
for(int x = 0; x < picture3.getWidth(); x++)
{
targetPixel = picture3.getPixel(x,y);
pixelColor = targetPixel.getColor();
// It sets the colors, but it sets the color of the whole picture, not
// the areas I want it to set in the picture.
if(((redValue > 150) && greenValue > 150) && blueValue > 150)
{
blueValue = 130;
greenValue = 17;
redValue = 50;
}
else if(((redValue < 75) && greenValue < 75) && blueValue < 75)
{
redValue = 240;
blueValue = 43;
greenValue = 100;
}
else if(((redValue < 25) && greenValue < 25) && blueValue < 25)
{
redValue = 140;
greenValue = 250;
blueValue = 45;
}
pixelColor = new Color(redValue, greenValue, blueValue);
targetPixel.setColor(pixelColor);
}
}
picture3.write("ColorizedWashingtonMonument.jpg");
picture3.show();
}
}
Danke für mich zu dieser API richten, jetzt weiß ich, was zu tun ist. – JavaNewbie