Wie sichere ich ein Image?
-
Hi zusammen,
kurze Frage:
Ich habe mir hier eine Klasse zusammengebaut. Sie enthält ein bisschen mehr
als nur gerade das Bild (3d kooridnaten, name, beschreibung und das bild selber)
Nun würde ich das gerne kompakt und alles in einem File binär speichern. Und wenn ich schon dabei bin will ich wirklich nur noch die RGB Werte des Bildes speichern (Ich weiss ja was für ein Bild-Format das ist.)Ich habe es versucht als Objekt zu sichern, was aber nicht ging weil ein Image nicht serializable ist.
Habt ihr irgendwelche Tips auf Lager wie ich am besten vorgehen könnte?
Danke!
-
Speichere doch jedes Bild in einer Datei.
Du kennst den Aufbau deiner Klasse. Dann schreibst du eine Funktion, die alle Daten der Klasse in einer bestimmten Syntax speichert und eine Funktion, die den ganzen Spaß wieder einlesen kann.
Was du eigentlich meintest ist wahrscheinlich das: http://de.wikipedia.org/wiki/Persistenz_%28Informatik%29.
Aber ich denke der Weg mit Einlese- und Auslesefunktionen ist sicherlich einfacher.
-
Hi und vielen Dank erstmal.
Ja, ich kenne natürlich den Aufbau meiner Klasse und kann das auch soweit sichern, dass ich das ganze gebrauchen könnte, als Text...
Das eigentliche Problem ist, das Image. Ich habe ein Gif-Bild mit ImageIO direkt geladen und im Objekt Image versorgt.
Mein "Sprite-Objekt/Klasse" hat folgende Informationen:Image sprite; Point3D spriteCenter; Dimension spriteSize; String spriteName; String origName;
Ich hab das ganze Objekt serializable gemacht und versucht als Obj. zu speichern. Das hat aber ned funktioniert, weil das Image NICHT serializable ist?!
Also hab ich weiter gesucht und versucht irgendwie an die Daten des Bildes zu kommen. Irgendwo im Speicher muss doch ein Array mit RGB-werten oder sowas rumliegen...
Wenn ich die hätte könnte ich byte für byte das speichern was ich will.Ich bin irgendwie etwas ratlos...
Danke!
-
Die Klasse Image ist ja auch nur ne abstrakte Oberklasse für Bilder.
Versuch mal BufferedImage zu benutzen, da hast du dann Zugriff auf deine Pixel-Werte.
-
Aha... vielen Dank für den Hinweis, ich werde das gleich mal ausprobieren!
Ich wusste nicht das man nicht, dass man keine Abstrakten speichern kann...
aber irgendwo mussen die Daten doch auch rumliegen bei einer Abstrakten, oder?
Mysterium OO-ProggenDanke nochmals, jetzt sehe ich einen Hoffnungsschimmer am Ende des Tunnels
-
Vllt gehts mit jimi?
" JIMI (Java Image Management Interface) ist eine hundertprozentige Java-Klassenbibliothek, die hauptsächlich Lade- und Speicherroutinen für Bilder zur Verfügung stellt. Die Klasse JimiUtils stellt beispielsweise eine getThumbnail()-Methode bereit, die zu einer Datei ein Vorschaubild als Image-Objekt berechnet. Ebenso stellt JIMI Möglichkeiten zur Anzeige bereit, um etwa sehr große Grafiken speichersparend zu verwalten. Diese Technik nennt sich Smart-Scrolling und kann von der JimiCanvas-Komponente übernommen werden. So wird nur jener Bildteil im Speicher gehalten, der gerade sichtbar ist. Für die Speicherverwaltung stellt JIMI ein eigenes Speicherverwaltungssystem, das VMM (Virtual Memory Management), bereit, ebenso wie eine eigene Image-Klasse, die schnelleren Zugriff auf die Pixelwerte erlaubt. Zusätzlich bietet JIMI eine Reihe von Filtern für Rotation und Helligkeitsanpassung, die auf JIMI- und AWT-Bildern arbeiten. Auch Farbreduktion ist ein Teil von JIMI. JIMI-Bilder lassen sich im Gegensatz zu den bekannten AWT-Bildern serialisieren."
http://www.galileocomputing.de/openbook/javainsel5/javainsel14_008.htm#Xxx999378
-
..im Gegensatz zu den bekannten AWT-Bildern serialisieren
Oha, ja das klingt ja mal ganz geil!
Danke! Auch diesem Tip werde ich noch nachgehen!!
-
Schau mal bei www.javaalmanac.com, dort habe ich afaik schonmal gesehen wie du Images direkt als JPEG abspeichern kannst.
MfG SideWinder