Image Datei serializieren

Status
Nicht offen für weitere Antworten.
S

Spacerat

Gast
Na schön... Serialisierung von Java-Klassen ist ja 'ne tolle Erfindung.

...aber als ich jüngst eine (programmierbare) Gui für meinen Protracker Player (Applet) fiel mir auf, das sich das wichtigste daran (Grafiken) gar nicht serialisieren lässt. Der Grund dafür scheint in der Klasse Image zu liegen, welche Serializable nicht implementiert. Hat jemand einen konstruktiven Vorschlag (ausser Swing, das geht auch nicht)?

cu Spacerat
 

Sky

Top Contributor
Vielleicht von Image ableiten und darin das Interface 'Serializable' implementieren??
 
S

Spacerat

Gast
Netter Versuch... Klappt aber irgendwie nicht. Aber trotzdem danke.

1. Muß man recht viele Methoden implementieren und
2. Hat man sich die Mühe gemacht, wird die serialisierte Datei um ein Vielfaches größer als die geladene Image-Datei.

Ich habe in Toolkit-Klasse die Methode createImage(byte[] buffer) gefunden. Damit kann ich nun die Image-Datei in einen ByteArrayInputStream laden und und das resultierende byte-Array serialisieren (genau so groß wie die Image-Datei).

So. Soviel schon mal zu vorhandenen Dateien. Nun fehlt nur noch die Möglichkeit in Java erstellte Images (BufferedImages) ganz oder ausschnittweise (z.B. durch getSubimage() erstellte) in eine Gif-Datei zu speichern (auf Platte oder in einen ByteArrayOutputStream (... wie gesagt. Das byte-Array lässt sich dann serialisieren).

Das ganze soll dann den Vorteil bringen, das mehrere (oder alle) Images (z.B. 6 für einen ActiveImageButton... Unterklasse des Players) der Player-Gui in einer Datei (mögl. noch gepackt) zu übertragen.

cu
 
S

Spacerat

Gast
Na gut...

Betrachten wir das Thema mal als erledigt. Die Lösung war doch eher simpel. Nu' hab' ich einen Image<->ByteArray Konverter und nene das Teil mal eben...
Code:
	public static final class SerializableImage
	{
		private static byte[] buffer;

		public static byte[] create(BufferedImage ri)
		{
			try {
				ByteArrayOutputStream out = new ByteArrayOutputStream();
				ImageOutputStream outImage = ImageIO.createImageOutputStream(out);
				ImageWriter iw = null;
				for (Iterator it = ImageIO.getImageWritersByFormatName("png"); it.hasNext();) {
					// png lieferte die kürzesten Dateien.
					iw = (ImageWriter) it.next();
				}
				iw.setOutput(outImage);
				iw.write(ri);
				buffer = out.toByteArray();
			} catch (Exception e) {
				System.err.println(e.toString());
			}
			return buffer;
		}

		public static BufferedImage load(byte[] b)
		throws Exception
		{
			BufferedImage img = null;
			ByteArrayInputStream in = new ByteArrayInputStream(b);
			ImageInputStream inImage = ImageIO.createImageInputStream(in);
			ImageReader ir = null;
			for (Iterator it = ImageIO.getImageReadersByFormatName("png"); it.hasNext();) {
				ir = (ImageReader) it.next();
			}
			ir.setInput(inImage);
			img = ir.read(0);
			return img;
		}
	}
So kann man mit "byte[] buffer = SerializableImage.create((BufferedImage) image)" das Image serialisieren und mit "BufferedImage image = SerializableImage.load(buffer)" wieder zurück schreiben. Das ByteArray lässt sich serialisieren, und das PNG-Format lieferte (im Gegensatz zu jpg???) die kürzeren Arrays. Eins fix drei lässt sich ein Patch-Work-Panel (Grafik-Datei mit allen Knöpfen, Hintergründen usw.) damit in alle Teil-Images zerlegen ("getSubimage()") und als Panel-Objekt serialisieren. Das Ergebnis könnt ihr in wenigen Tagen hier betrachten (Anm.: das dort verwendete J3D-Logo abeitet leider nicht so wie es soll, aber man muß es ja nicht unbedingt suchen.).

cu
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Pixelanzahl aus Raw Image Datei Allgemeine Java-Themen 1
T iso datei (Image) mit Java einlesen und Inhalt entpacken Allgemeine Java-Themen 3
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
Mozart53 JLabel nur meinen Text verschieben ohne Image Allgemeine Java-Themen 3
Y Wie bekomme ich durch getImage an das Image heran? Allgemeine Java-Themen 1
J jsch direktes streamen in ein image Allgemeine Java-Themen 11
A 2D-Grafik Einfachster Ansatz, um sich wiederholende Figur in einem 2D-Image zu erkennen Allgemeine Java-Themen 1
T 2D-Grafik Chart als Image erstellen Allgemeine Java-Themen 3
G Image in Shape wandeln Allgemeine Java-Themen 1
T Swing Image rotieren Allgemeine Java-Themen 1
I nach Image Load in ListView, kann Ordner nicht mehr gelöscht werden Allgemeine Java-Themen 1
C pfad vom Image ausgeben lassen Allgemeine Java-Themen 5
Bananabert Swing jtree : image als user object Allgemeine Java-Themen 2
M Image auslesen Allgemeine Java-Themen 2
H OCR und Image Processing Allgemeine Java-Themen 4
M Image für PDF nicht verfügbar - Runnable .jar Allgemeine Java-Themen 3
S BLOB Image in JSP anzeigen Allgemeine Java-Themen 5
BRoll Image RGB Werte auslesen und vergleichen Allgemeine Java-Themen 8
K Image zu BufferedImage konvertieren Allgemeine Java-Themen 9
K Image beim catchen ist immer null Allgemeine Java-Themen 9
X Image Processing libary für JavaSE und Android Allgemeine Java-Themen 2
Crashbreaker RCP-View Image öffnen und darstellen Allgemeine Java-Themen 7
S IMAGE ARRAY laden Allgemeine Java-Themen 6
B Image oder GridControl? Allgemeine Java-Themen 8
B Image Thinning Allgemeine Java-Themen 3
A Input/Output Buffered Image zu Byte Array und zurück konvertieren Allgemeine Java-Themen 4
F Datentypen Floppy-Image-Dateisystem Allgemeine Java-Themen 5
F Image - Ausschnitt bekommen Allgemeine Java-Themen 3
J Teil eines Image/ImageIcon zeichnen Allgemeine Java-Themen 2
N Unable to convolve src image Allgemeine Java-Themen 7
H image in jtextarea/JLabel einbinden... Allgemeine Java-Themen 4
Aigu Bilderkennung / Image Analysis Allgemeine Java-Themen 2
M Nochmal I-Frame zu Image Allgemeine Java-Themen 4
M JPEG Image komprimieren Allgemeine Java-Themen 2
M Probleme mit Image Extraction aus PDF Allgemeine Java-Themen 2
V Image laden - URL über ClassLoader ermitteln Allgemeine Java-Themen 2
G sun.awt.image.OffScreenImage Serializable machen Allgemeine Java-Themen 5
T Image in gif umwandeln Allgemeine Java-Themen 14
G itext größe von image Allgemeine Java-Themen 2
T JPanel to Image? Allgemeine Java-Themen 6
K Image Resizer Allgemeine Java-Themen 4
D Image runterscalieren, aber schlechte Quali? Allgemeine Java-Themen 3
L Buffered Image teilweise zeichnen Allgemeine Java-Themen 6
P Image erzeugen Allgemeine Java-Themen 7
B Image libraries Allgemeine Java-Themen 3
MQue Image über Komponente Allgemeine Java-Themen 3
P Image auf JPanel auf JFrame Allgemeine Java-Themen 3
P Image auf einem Panel mit null-Layout Allgemeine Java-Themen 8
E Image unterscheiden Allgemeine Java-Themen 16
E Image auf einem JLabel darstellen Allgemeine Java-Themen 3
F BufferedImage -> Image Allgemeine Java-Themen 4
E Wie bekomme ich mein Image in das Fenster Allgemeine Java-Themen 2
T Muster/Zeichen/Texterkennung auf einem Image Allgemeine Java-Themen 9
L Linien, Recktecke und Elipsen zeichnen ohne Image Allgemeine Java-Themen 2
T Disk Image Library (iso,mdf,nrg,bin) Allgemeine Java-Themen 6
S KeyListener! Image Problem! Allgemeine Java-Themen 2
S Image als Background Allgemeine Java-Themen 5
B Image(png) versenden Allgemeine Java-Themen 3
N Image -> cropImage Allgemeine Java-Themen 3
T Image mithilfe von DirectColorModel und Pixel erstellen Allgemeine Java-Themen 3
G Image in der Größe ändern Allgemeine Java-Themen 2
C probleme mit image Allgemeine Java-Themen 4
C Pixelfarbe aus einem image auslesen Allgemeine Java-Themen 6
M Image Skalieren Allgemeine Java-Themen 23
D ByteArray für Image-Icon laden. Allgemeine Java-Themen 4
O Image mit transparenten farben wie bei *.GIF ? Allgemeine Java-Themen 3
B Image#getScaledInstance & Graphics2D#drawImage ClassCast Allgemeine Java-Themen 3
H Speicher freigeben klappt nicht bei Image Objekten, warum? Allgemeine Java-Themen 8
H Skalieren von Image -> java.lang.OutOfMemoryError - WARUM Allgemeine Java-Themen 18
T Auf ein Image geklickt Allgemeine Java-Themen 13
J ISO image erzeugen Allgemeine Java-Themen 3
J Wie mache ich den Hintergrund einer Image durchsichtig? Allgemeine Java-Themen 7
G Aus JPanel Image Hohlen Allgemeine Java-Themen 3
D BufferedReader in image umwandeln Allgemeine Java-Themen 3
G JFrame nimmt mein Image nicht Allgemeine Java-Themen 2
F Image als GIF oder JPEG abspeichern Allgemeine Java-Themen 2
kodela StatusBar-Anzeigen auch in Log-Datei ausgeben Allgemeine Java-Themen 3
G Maven Projekt JAR-Datei Allgemeine Java-Themen 6
E XML - Datei Darstellung in IntelliJ als Baum Allgemeine Java-Themen 2
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
D Erste Schritte Mp3 Datei kann nicht von der Festplatte geöffnet werden - mit ChatGPT erstellt Allgemeine Java-Themen 7
J Filenotfoundexception obwohl Datei existiert Allgemeine Java-Themen 6
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
E Datei verschoben Event Allgemeine Java-Themen 3
D Datei mit "Kohsuke GitHub API" in Repository hochladen Allgemeine Java-Themen 2
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
G JavaFX Maven Projekt als .exe Datei exportieren Allgemeine Java-Themen 10
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
Neumi5694 Datei komprimiert Allgemeine Java-Themen 6
_user_q Obfuscate einer .jar-Datei mit ProGuard? Allgemeine Java-Themen 2
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
E java mithilfe url .jar datei öffnen Allgemeine Java-Themen 9
E Java .exe Datei mit args starten Allgemeine Java-Themen 2
W Bilder werden in App mit Jar-Datei nicht angezeigt Allgemeine Java-Themen 15
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
M Excel Datei Erstellen Allgemeine Java-Themen 2
E Input/Output Eigene Datei mit java öffnen Allgemeine Java-Themen 9
R Sonderzeichen aus Datei einlesen und in Datei ausgeben. Allgemeine Java-Themen 17

Ähnliche Java Themen

Neue Themen


Oben