Wie konvertiert Byte-array in Image in Java SE
Was ist der richtige Weg, um konvertieren von raw-Byte-array in Image in Java SE.
array aus bytes, in denen je drei Byte repräsentieren ein pixel, wobei jedes byte für die entsprechende RGB-Komponente.
Kann jemand empfehlen, ein code-Beispiel?
Dank,
Mike
- Schließlich habe ich nicht etwas besseres finden, dann: for(int y=0; y<Höhe; y++) { for(int x=0; x<width; x++) { int i0 = (y*width+x)*3; frameImg.setRGB(x, y, ((Daten[i0]&0xFF) | ((data[i0+1]&0xFF)<<8) | ((data[i0+2]&0xFF)<<16))); } }
- Was sind die Abmessungen von dem Byte-array? Ist es ein 1-dimensionales array ein 2-dimensionales array, oder ein 3-dimensionales array?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt, Sie wissen, die Höhe und Breite des Bildes.
Grob. Dies setzt Voraus, der pixel-Daten codiert ist, als eine Reihe von Reihen; und dass die Länge der Farben ist 3 * Breite * Höhe (sollte gültig sein).
int rgb = ((int)colors[in] << 24) + ((int)colors[in+1] << 8) + (int)colors[in]
(0xFF << 24) + ((int)color[in] << 16) ...
. Du musst die alpha im intcolors
ist ein RGB-array (R, G, & B sind einzelne bytes), sollte nichtindex
immer um eins erhöht, um mehr als 1 pro loop?Kann man es mit Raster-Klasse. Es ist besser, weil es nicht erfordern, Durchlaufen und kopieren von byte-arrays.
folkyatina Ansatz funktioniert, wenn Ihre RGB-Werte sind in B,G,R, um, aber, wenn Sie in R -, G -, B-Bestellung, die ich gefunden habe, der folgende code funktioniert:
Es ist ein setRGB Variante akzeptiert ein int-array mit den RGBA-Werte:
Die Leistungscharakteristik ist ähnlich CoderTao's Lösung.