Hi,
ich schreibe gerade an einem kleinen Java Programm und eine sehr wichtige Komponente ist das korrekte Schreiben und Lesen der RGB-Werte von den einzelnen Pixeln.
Dummerweise unterscheiden sich die Werte die ich bei setRGB eingebe stark von denen die ich mit getRGB bzw. einen Grafikprogramm auslese.
Die ersten beiden Methoden schreiben (lesen) die Farbe von dem gewählten Pixel. Und die nächsten beiden sind für speichern / auslesen der dafür vorgesehenen Arrays zuständig.
Wie bekomme ich das hin, dass immer nur ein Pixel geändert wird und ich beim Auslesen auch genau den gleichen Wert zurückbekomme?
Edit: Problem gelöst: Datei als .png abspeichern, dann werden die Werte nicht verfälscht...
ich schreibe gerade an einem kleinen Java Programm und eine sehr wichtige Komponente ist das korrekte Schreiben und Lesen der RGB-Werte von den einzelnen Pixeln.
Dummerweise unterscheiden sich die Werte die ich bei setRGB eingebe stark von denen die ich mit getRGB bzw. einen Grafikprogramm auslese.
Die ersten beiden Methoden schreiben (lesen) die Farbe von dem gewählten Pixel. Und die nächsten beiden sind für speichern / auslesen der dafür vorgesehenen Arrays zuständig.
Code:
public void readColor(int x, int y){
int rgb = image.getRGB(x,y);
r = ((rgb >> 16) & 0xff);
g = ((rgb >> 8) & 0xff);
b = (rgb & 0xff);
rgbArray[0] = r; rgbArray[1] = g; rgbArray[2] = b;
}
public void writeColor(int x, int y){
int rgb = (rgbArray[0] << 16) | (rgbArray[1] << 8) | (rgbArray[2] << 0);
newImage.setRGB(x, y, rgb);
//newImage.setRGB(x, y, new Color(rgbArray[0], rgbArray[1], rgbArray[2]).getRGB());
}
public void setColor(int [] rgbArray0){
rgbArray = rgbArray0;
}
public int [] getColor(){
return rgbArray;
}
Wie bekomme ich das hin, dass immer nur ein Pixel geändert wird und ich beim Auslesen auch genau den gleichen Wert zurückbekomme?
Edit: Problem gelöst: Datei als .png abspeichern, dann werden die Werte nicht verfälscht...
Zuletzt bearbeitet: