byte Array aus ImageIcon

pausch

Aktives Mitglied
Hallo Java-Gemeinde,
Ich schreibe derzeit ein Programm zum verwalten von DVDs. Um das Cover zu speichern verwende ich in meiner Klasse
Code:
DVD
den Datentyp des [japi]ImageIcon[/japi]s. Um das Cover in meine lokale Datenbank zu Schreiben (javaDB/Derby) brauche ich allerdings ein Byte Array des Covers (ist ein BLOB feld).
Jetzt meine Frage:
Wie bekomme ich aus dem ImageIcon ein ByteArray und wie bekomme ich beim abrufen aus der Datenbank wieder ein ImageIcon?
Wäre nett, wenn Ihr mir helfen könntet.

Danke schonmal...
pausch
 

Marco13

Top Contributor
Wie kommt denn das Bild ins ImageIcon? Wenn das überall ein BufferedImage ist, geht es recht leicht: Das BufferedImage kann man z.B. als PNG oder JPG in einen ByteArrayOutputStream schreiben (und aus einem ByteArrayInputStream lesen), mit ImageIO. Ansonsten müßte man das Image erst in ein BufferedImage reinmalen.
 

pausch

Aktives Mitglied
Das Bild kommt als [japi]URL[/japi] in das [japi]ImageIcon[/japi]. Das hilft allerdings kaum, weil ich von der Stelle des Programms auf das ich auf das [japi]ImageIcon[/japi] zugreife und in meinem Entity abspeichere, keinen Zugriff mehr auf die ursprüngliche [japi]URL[/japi] habe.
 

Marco13

Top Contributor
Hmja, auch von der URL werden die Daten irgendwie gelesen. Eigentlich sollte strukturell gesehen wohl in der (Modell-) Klasse "DVD" kein ImageIcon, sondern bestenfalls ein BufferedImage liegen, aber wenn dort ein ImageIcon liegen soll, wirst du das Image vom ImageIcon zum lesen und Schreiben un ein BufferedImage konvertieren müssen. Wie werden die Daten denn in das ImageIcon gelesen, NACHDEM sie einmal abgespeichert wurden?
 

pausch

Aktives Mitglied
Dann machen wir aus dem ImageIcon in der DVD doch ein BufferedImage, gar keine schlechte Idee :) Danke.
Fragt sich nur, wie ich aus einer URL ein BufferedImage generieren lassen kann...
 

Marco13

Top Contributor
War ja nur ein Gedanke. Ein Bild ist eben die "Elementarste" Repräsentation eines Covers. Ein ImageIcon ist eine GUI-Component, die mit dem "Datenmodell" der DVD nicht viel zu tun hat.
Wie auch immer: Aus einer URL kann man sich mit URL (Java Platform SE 6) einen InputStream holen, den man dann mit ImageIO (Java Platform SE 6) zu einem BufferedImage machen kann.
Wo kommt die URL her? Ist das eine Datei?
 

pausch

Aktives Mitglied
War ja nur ein Gedanke. Ein Bild ist eben die "Elementarste" Repräsentation eines Covers. Ein ImageIcon ist eine GUI-Component, die mit dem "Datenmodell" der DVD nicht viel zu tun hat.
Wie auch immer: Aus einer URL kann man sich mit URL (Java Platform SE 6) einen InputStream holen, den man dann mit ImageIO (Java Platform SE 6) zu einem BufferedImage machen kann.
Wo kommt die URL her? Ist das eine Datei?

...Nachdem ich jetzt etwas gesucht und wenig gefunden habe, kommt jetzt meine (vielleicht etwas blöde) Frage:
Wie bekomme ich denn ein BufferedImage aus der URL? Und weiter gedacht: Um das BufferedImage in ein ByteArray zu konvertieren benötige ich auch das Format des Bildes, das ja bekanntlich auch variieren kann, wenn ich die URL wie oben beschrieben abrufe!

Danke nochmal...
 

pausch

Aktives Mitglied
Ok einen Schritt bin ich schon weiter:
Java:
BufferedImage bi = ImageIO.read(url.openStream());
Erst lesen dann probieren, dann antworten... Ich habe nicht gut gelesen, glaube ich... Naja aber nachwievor habe ich die Formatprobleme...

Hier meine aktuelle Lösung, aber ich frage mich, ob das überhaupt funktioniert...
Java:
private byte[] getByteArray(BufferedImage i) {
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		try {
			ImageIO.write(i, "jpg", baos);
			return baos.toByteArray();
		} catch (IOException e) {
			try {
				ImageIO.write(i, "png", baos);
				return baos.toByteArray();
			} catch (IOException ex) {
				logger.error("Bild konnte nicht gespeichert werden!", e);
				RootController.setException(ex);
			}

			logger.error("Bild konnte nicht gespeichert werden!", e);
			RootController.setException(e);
		}
		return null;
	}
 
Zuletzt bearbeitet:

Marco13

Top Contributor
So ganz habe ich die Frage nicht verstanden: Das BufferedImage hat kein "Format", zumindest nicht im Sinne von JPG oder PNG. Das BufferedImage ist ein Array von Pixeln (und noch ein bißchen mehr). WAS soll genn genau in diesem byte-Array drin stehen? Im bisher geposteten Code würde der byte-Array immer das enthalten, was auch auf der Festplatte in einer Datei stehen würde, wenn man das Bild als JPG abspeichert. (Das könnte man dann z.B. auch in eine DB packen, und entsprechend aus diesen JPG-Daten dann auch wieder ein BufferedImage machen). Oder wolltest du wirklich die pixel des Bildes speichern? Das wäre ziemliche Platzverschwendung. Zumindest PNG sollte es schon sein (das wäre im Gegensatz zu JPG auch verlustfrei)
 

pausch

Aktives Mitglied
Ich bin auch eher ein PNG-Freund.
Ich wusste nicht, genau wie ein BufferedImage arbeitet, jetzt habe ich das glaube ich durchblickt, ich speichere also mit der ImageIO.write methode das Bild in einem angegebenen Format und sage ImageIO.write nicht welches Format das Bild vorher hatte. Danke :)

Schönen abend noch ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G ImageIcon in Byte-Array ablegen Java Basics - Anfänger-Themen 7
krgewb byte-Array, das ein Bild repräsentiert Java Basics - Anfänger-Themen 1
S Byte-Array kann chars speichern? Java Basics - Anfänger-Themen 3
N Datentypen Image zu Byte-Array Java Basics - Anfänger-Themen 4
D Methoden int to byte array und zurück? Java Basics - Anfänger-Themen 5
F Byte Array wachsen lassen Java Basics - Anfänger-Themen 5
F Teil eines Byte Array an eine Methode übergeben Java Basics - Anfänger-Themen 5
M sehr großes Byte Array Java Basics - Anfänger-Themen 3
M Byte Array und Co. Java Basics - Anfänger-Themen 12
F Hexfolge in Byte Array ersetzen Java Basics - Anfänger-Themen 8
H Variablen 32bit Zählwert als Byte-Array Java Basics - Anfänger-Themen 9
M byte Array Mindestlänge Java Basics - Anfänger-Themen 19
D [jni] jbytearray <-> byte array Java Basics - Anfänger-Themen 8
V Jar-Datei von Byte-Array oder Stream laden? Java Basics - Anfänger-Themen 9
H Datentypen Byte-Array RSA Java Basics - Anfänger-Themen 9
H Datentypen Rechnen mit signed Byte-Array - unsinged byte Java Basics - Anfänger-Themen 3
M Byte Array: Werte größer 127? Java Basics - Anfänger-Themen 11
H Datentypen Byte-Array aus Stream lesen Java Basics - Anfänger-Themen 3
S Unbekannte Daten einlesen, speichern und in einem byte Array speichern Java Basics - Anfänger-Themen 3
S Alle Datentypen in byte Array und zurückwandeln Java Basics - Anfänger-Themen 2
J Byte-Array als Hex-Datei speichern? Java Basics - Anfänger-Themen 9
J String array to byte array Java Basics - Anfänger-Themen 8
G SHA (byte array) per modulo hashen Java Basics - Anfänger-Themen 6
K Byte-Array als Zeichenfolge ausgeben Java Basics - Anfänger-Themen 3
G byte array in integer konvertieren Java Basics - Anfänger-Themen 15
mwildam Byte array oder String Java Basics - Anfänger-Themen 4
P InputStream in Byte-Array speichern Java Basics - Anfänger-Themen 2
U byte array in datei 'dumpen' / speichern Java Basics - Anfänger-Themen 2
G Byte Array inkrementieren Java Basics - Anfänger-Themen 17
H String in Byte Array wandeln Java Basics - Anfänger-Themen 25
H von und in byte array wandeln Java Basics - Anfänger-Themen 8
D Byte-Array zu Hex-String umwandeln Java Basics - Anfänger-Themen 3
G Konvertierung Byte Array Java Basics - Anfänger-Themen 4
tobiasbeil Von Datei byte für byte lesen und in ein Array einfügen. Java Basics - Anfänger-Themen 11
G Byte-Array Infos speichern Java Basics - Anfänger-Themen 14
F char to byte array Java Basics - Anfänger-Themen 8
S byte-array bitweise auslesen Java Basics - Anfänger-Themen 14
G Char oder Byte Array mit unbekannter länge erstellen? Java Basics - Anfänger-Themen 1
T XML Parsen und Inhalt in ein Byte Array schreiben Java Basics - Anfänger-Themen 3
C Byte-Array mit Dateiinhalt füllen Java Basics - Anfänger-Themen 7
G 4-stelliges-Byte-Array in Integer umwandeln geht das? Java Basics - Anfänger-Themen 10
C Probleme mit Byte konvertieren nach int Java Basics - Anfänger-Themen 10
T IOStreams read(byte[]b) methode Java Basics - Anfänger-Themen 2
I Dateigröße von einem InputStream oder byte[] bekommen Java Basics - Anfänger-Themen 2
D Best Practice Parameter int vs byte Java Basics - Anfänger-Themen 16
J RSA Verschlüsselung Testen / byte[] in Objekt umwandeln Java Basics - Anfänger-Themen 1
M Datentypen Byte, Float und Boolean Java Basics - Anfänger-Themen 13
F byte, short oder doch int? Java Basics - Anfänger-Themen 6
S Performance von byte[], short[], int[]..? Java Basics - Anfänger-Themen 24
P int zu byte Java Basics - Anfänger-Themen 8
M Java Klasse Byte Java Basics - Anfänger-Themen 10
F Byte Ausgabe plötzlich falsch Java Basics - Anfänger-Themen 0
V String in Byte umwandeln Java Basics - Anfänger-Themen 11
O Input/Output Ein (negatives) Byte über PrintWriter hinausschreiben Java Basics - Anfänger-Themen 3
T byte[] zu String mit Sonderzeichen Java Basics - Anfänger-Themen 2
W Nullpointer bei Objekt Serialisierung mit ArrayList<byte[]> etc. Java Basics - Anfänger-Themen 2
J byte - Ausgabe Java Basics - Anfänger-Themen 2
S byte to float Java Basics - Anfänger-Themen 4
J Byte Folge erkennen Java Basics - Anfänger-Themen 5
T Operatoren Float in byte umwandeln Java Basics - Anfänger-Themen 3
Y File to byte[] and byte[] to sysout Java Basics - Anfänger-Themen 3
P Wann Byte-Stream und wann Character-Stream? Java Basics - Anfänger-Themen 11
P String in byte konvertieren, wie? Java Basics - Anfänger-Themen 4
T Erste Schritte Byte Java Basics - Anfänger-Themen 3
R byte[] zu String und Ausgabe Java Basics - Anfänger-Themen 2
H Variablen short <-> byte[] Java Basics - Anfänger-Themen 15
X Datentypen String in byte[] Java Basics - Anfänger-Themen 29
H Variablen string nach byte Java Basics - Anfänger-Themen 12
B Frage zur Effizienz von read und read(byte[]) Java Basics - Anfänger-Themen 23
R Erste Schritte Rechnenoperationen mit byte, short und char Java Basics - Anfänger-Themen 8
V Datentypen Frage zum Datentyp Byte Java Basics - Anfänger-Themen 11
L Byte[] to String, doch bits sind gespiegelt (MSB/LSB) Java Basics - Anfänger-Themen 3
S Von byte[] nach String zurueck nach byte[]. Arrays sind nicht identisch :( Java Basics - Anfänger-Themen 6
S ArrayList<Byte> in String umwandeln Java Basics - Anfänger-Themen 5
V unsigned byte? Java Basics - Anfänger-Themen 27
U short[] nach byte[] Java Basics - Anfänger-Themen 11
S Datentypen Ändern eines byte[] Arrays Java Basics - Anfänger-Themen 4
B byte-weise Verschlüsselung Java Basics - Anfänger-Themen 6
S Input/Output String in byte umwandeln? Java Basics - Anfänger-Themen 5
F von Byte zu 2 Stellig Hex Java Basics - Anfänger-Themen 3
G byte[] (Base64) korrekt übergeben Java Basics - Anfänger-Themen 4
O 64bit- OS byte, short, int oder long bzw. float oder double? Java Basics - Anfänger-Themen 13
G Binär in Byte speichern Java Basics - Anfänger-Themen 7
T Datentypen byte -Division..mal gehts mit cast mal ohne Java Basics - Anfänger-Themen 5
T Datentypen default ist int, cast zu byte nötig... Java Basics - Anfänger-Themen 2
F Byte nach Zahl umwandeln Java Basics - Anfänger-Themen 11
E Datentypen type cast problem (int, byte,) Java Basics - Anfänger-Themen 5
T Datentypen unsigned byte? Java Basics - Anfänger-Themen 9
G Integar zu Byte Java Basics - Anfänger-Themen 4
P Byte mit 0...255? Java Basics - Anfänger-Themen 5
N Datentypen Fehler beim Umwandeln in byte Java Basics - Anfänger-Themen 3
L Umwandlung int <--> byte Java Basics - Anfänger-Themen 2
L Datentypen 250 und byte? Java Basics - Anfänger-Themen 4
L Datentypen byte[] in String und wieder zurück Java Basics - Anfänger-Themen 3
N Files mit Byte an Socket versenden Java Basics - Anfänger-Themen 2
V Byte -> String -> Byte verlustfrei Java Basics - Anfänger-Themen 12
Hindi93 Byte to Int Java Basics - Anfänger-Themen 4
H Datentypen byte[] to int Java Basics - Anfänger-Themen 9
S hex zu byte Java Basics - Anfänger-Themen 4
S Addition zweier 32 Byte langer ByteArrays Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben