2016-07-16 17 views
-1

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(); 

} 
} 

Antwort

0

Gerade versucht, Ihren Code zu kompilieren - viele Fehler über Verweise auf Dinge erhalten, die in AWT-Paket, wie existieren nicht: - Bild - Pixel

Sie Leute versuchen, zu erhalten hier, um deine Hausaufgaben für dich zu machen?

Wie auch immer, müssen Sie javax.imageio überprüfen - für das Bild Parsen http://docs.oracle.com/javase/8/docs/api/javax/imageio/package-summary.html

+0

Danke für mich zu dieser API richten, jetzt weiß ich, was zu tun ist. – JavaNewbie