2D-Grafik GIF Library mit byte output

Bitte aktiviere JavaScript!
Hallo,
ich suche noch eine (kleine) freie GIF-Library, die mir byte[] ausgibt und kein blödes BufferedImage. Genauso muss die Library bytes als input annehmen.
 
A

Anzeige


Vielleicht hilft dir dieser Kurs hier weiter: (hier klicken)
Was ist denn für dich eine "GIF-Library"?

Ein Gif in ein byte-Array Laden ist kein Problem, genauso wenig wie ein BufferedImage in ein byte-Array schreiben oder aus diesem lesen...
 
Eine Library, die Gif-bilder aus einer Datei laden kann und als byte[] zur verfügung stellt. bzw. auch umgekehrt. Ich hab mir schon das Teil aus dem imageIO angeguckt, aber das versaut die Pixel, wenn ich ihm nur das selbe Image wieder zu schreiben gebe. Ich hab das Gefühl, da stimmt was mit dem LZW-Kompressor nicht.
 
Also Datei->byte[]->Datei?

Java:
byte[] fileContent = Files.readAllBytes(/*pfad...*/);

Files.write(/*pfad...*/, fileContent);
Ob das ein GIF ist, ist völlig egal, wenns eh nur um das byte[] geht...
 
Vielleicht hab ich mich unklar ausgedrückt. Ich will die Pixel-Daten als byte[] haben. Alles andere wäre ja auch total unsinnig. Und natürlich nicht um sie gleich wieder in eine Datei zu schreiben, sondern damit zu arbeiten und vielleicht hinterher wieder zu schreiben.
Mein Vergleich soll nur verdeutlichen, dass mir die implementation von sun nicht reicht. Zum einen stört mich, dass sie nur ein BufferedImage zurück geben kann und darüber hinaus arbeitet der reader und der writer nicht symetrisch.
 
Kann ich, ist aber aufwändig und ich habe gehofft, jemand kennt da eine flexiblere Library.

möglicherweise, aber ich hab noch nicht durchgeblickt, wie das Formatiert ist. In dem Ding laufen ganz komische Sache ab.:confused:
 
In dem Ding laufen ganz komische Sache ab.
Was findest Du daran komisch?

GIF verwendet indizierte Farben. Die Pixel werden daher als Paletten-Indizes repräsentiert, die komprimiert gespeichert werden. Der Decoder entpackt also zuerst die Paletten-Indizes der Pixel in das pixels-Array. Das pixel-Array ist zeilenweise aufgebaut, wobei zwischen Zeile im Array und Zeile im Bild nicht unbedingt eine 1:1-Abbildung stattfindet (interlaced GIFs).

setPixels() sorgt nun einfach dafür, dass die RGB-Farben der Farbpalette in das das int-Array des DataBufers eines Bildes (BufferedImage) in der richtigen Reihenfolge (interlaced GIFs) übertragen werden. Außerdem berücksichtigt es den Umstand, dass in einem GIF mehrere Teilbilder enthalten sein können (animated GIFs).
 
Mit komisch meine ich das BufferedImage, insbesondere den DataBuffer. Da stehen zwar irgendwie die Indizes aus der Tabelle drin, aber dann sind da auch wieder Nullen drin. Und was soll diese Performance-Warung in der Doku. Schiebt der mir das Image gleich in den Video-Ram?
Mir ist das Teil total suspekt und eigentlich will ich mich damit gar nicht befassen müssen.

Ich hab jetzt sowiso beschlossen kein gif zu unterstützen und stattdessen beim import eine Auto-Formatierung anzubieten.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben