Java getRGB gibt anderen Wert zurück als mit setRGB eingestellt

monstr007

Cadet 4th Year
Registriert
Jan. 2006
Beiträge
99
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.

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:
monstr007 schrieb:
Problem gelöst: Datei als .png abspeichern, dann werden die Werte nicht verfälscht...
Ich würde mal schätzen, dass ein Farbprofil enthalten ist, was die eigentlichen Farbwerte verändert. Damit kenn ich mich allerdings kaum aus und kann dir daher nicht mehr sagen.
 
Zurück
Oben