BufferedImage zeigt nur schwarz

Alucardd

Mitglied
Hi,

tüftle jetzt schon ewig an diesem Programm rum und ich glaube es ist nur noch eine Kleinigkeit die falsch ist aber ich komme nicht drauf..

also ich habe eine Methode die durch jedes Pixel meines BufferedImage durchiteriert und das jeweilige Pixel mit

image.setRGB(x,y,<getcolor>) "einfärbt.

aber am ende wird mir immer ein komplett schwarzes Bild angezeigt.

So nun hab ich mal überprüft was meine getcolor methode z.b bei Position x= 3 und y= 2 für eine zahl zurückgibt.
da wurde mir "11993088" ausgespuckt was glaube ich Rot ist.

bis dahin alles gut aber dann hab ich geguckt was mir image.getRGB(3,2) nach der schleife zurückgibt.
Da wurde mir dann "-4784128" ausgegeben. Was glaube ich keine Farbe ist und deswegen auch nur alles schwarz angezeigt wird

Danach hab ich geschaut auf welchem farbwert meine Pixel standartmäßg liegen und da wurde mir "-16777216" ausgespuckt.

-16777216+11993088 = -4784128

D.h. der Farbwert wurde diesem extrem niedrigen Grundwert nur hin addiert und raus kam immer noch ne negative zahl... Ist das normal?
Muss der standart RGB wert nicht 0 sein ?

Hoffe mir kann jemand helfen
Grüße
 
Wenn Du mit binären Werten arbeitest, solltest Du auf die Ausgabe in dezimaler Form verzichten. Erstens ist die Dezimazahl schwer zu interpretieren, zweitens sind die meisten Datentypen in Java mit Vorzeichen behaftet, so dass Du negative Werte ausgegeben bekommst.

Statt einem System.out.println(image.getRGB(3,2)) machst Du besser ein System.out.printf("%08x\n", image.getRGB(3,2)); dann bekommst Du eine schöne, hexadezimale Zahl.

Der Farbwert ist so kodiert, dass die höchstwertigen 8 Byte den Alphawert angibt, gefolgt von den Werten für rot, grün und blau (ARGB).

So nun hab ich mal überprüft was meine getcolor methode z.b bei Position x= 3 und y= 2 für eine zahl zurückgibt.
da wurde mir "11993088" ausgespuckt was glaube ich Rot ist.

11993088 ist 0x00b70000, also ein Rot (0xb7) mit alpha=0
-4784128 ist 0xffb70000 ist das gleiche Rot, jedoch mit alpha=255 (0xff)

Wenn das Bild über einen Alphakanal verfügt, ist die erste Farbe unsichtbar (alpha=0), während die zweite Farbe volle Deckkraft besitzt.

Danach hab ich geschaut auf welchem farbwert meine Pixel standartmäßg liegen und da wurde mir "-16777216" ausgespuckt.
-16777216 ist 0xff000000, also schwarz mit voller Deckkraft.
 

Zurück
Oben