2D-Grafik Konvertierung RGB-Farbwert und zurück scheitert

chaostheory

Bekanntes Mitglied
Hallo,
ich versuche momentan Dateien in Bildern zu verstecken indem ich die einzelnen bytes des rgb-Wertes der Pixel ändere.
Allerdings scheitert die Konvertierung vom rgb-integer in einen byte-array und zurück, da sich der Wert ändert. Die folgende Methode sollte nutzt die Klasse Color aus der Java-Bibliothek und sollte korrekt konvertieren, allerdings ist der Alpha-Wert immer unterschiedlich, nur die Farben stimmen. Mache ich etwas falsch oder ist das ein Fehler in Java?
Java:
Random r = new Random();
		int red = r.nextInt(255), green = r.nextInt(255), blue = r.nextInt(255), alpha = r.nextInt(255); 
		Color one = new Color(red, green, blue, alpha);
		Color two = new Color(one.getRGB());
		System.out.println(one.getRed() + " " + one.getGreen() + " " + one.getBlue() + " " + one.getAlpha());
		System.out.println(two.getRed() + " " + two.getGreen() + " " + two.getBlue() + " " + two.getAlpha());
 
Hallo,
ich habe das jetzt nicht ausprobiert sondern nur einen Blick in die Doku geworfen. Danach liefert
Code:
int Color.getRGB()
einen Integerwert zurück welcher die Alpha-Komponente beinhaltet. Der Konstructor
Code:
Color (int rgb)
dagegen nimmt sich nur der R-, G- und B-Werte an:
Javadocs hat gesagt.:
public Color(int rgb)
Creates an opaque sRGB color with the specified combined RGB value consisting of the red component in bits 16-23, the green component in bits 8-15, and the blue component in bits 0-7. The actual color used in rendering depends on finding the best match given the color space available for a particular output device. Alpha is defaulted to 255.

Versuch's halt mal mit einem anderen Konstruktor.
 
@chaostheory: Wozu brauchst du überhaupt Color? Nach dem, was du vorhast (Steganographie?), sollte reines Bit-Geschubse auf ints ausreichen.

Ark
 
Das Problem wurde bei Stack Overflow gelöst, man muss einen anderen Constructor nehmen (int rgb, boolean alpha), der auch Alpha-Werte berücksichtigt.
Allerdings bin ich jetzt doch wieder auf eigenes Bitshifting umgestiegen.

Danke für die schnelle Hilfe!
 

Zurück
Oben