3Danke
ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
343
343
EMPFEHLEN
-
19.04.11 18:19 #1
- Registriert seit
- May 2007
- Beiträge
- 3
Moin,
ich suche jetzt bereits mehrere Stunden nach einer Lösung, aber ich habe zu wenig Ahnung von dem Zeugs und wäre froh, wenn mir jemand hier aushelfen könnte.
Zu meinem Problem: Ich schreibe im Moment einen MP3 Player mit JavaZoom und möchte alle ID3-Tags auslesen (funktioniert soweit auch super, nur habe ich ein Problem mit dem Albumcover). Die MP3 lese ich in ein byte Array welches kurz darauf ein einen String gespeichert wird.
Wenn ich jetzt das Cover aus dem ID3 Tag nehme und es in ein JPG speichere, ist es fehlerheft. Genauer gesagt werden alle Unicode-Zeichen die dem Latin-1 angehören in \u003f umgewandelt, wodurch das Bild halt ziemlich beschädigt aussieht.
Hier mein Code:
Code java:1 2 3 4 5 6 7 8
RandomAccessFile ranFile2 = new RandomAccessFile("23.jpg","r"); byte[] bytearr2 = new byte[(int) ranFile2.length()]; ranFile2.seek(0); ranFile2.read(bytearr2,0,(int) ranFile2.length()); String b = new String(bytearr2); BufferedWriter out = new BufferedWriter(new FileWriter("test.jpg")); out.write(b); out.close();
Geändert von Darth Sitthiander (21.04.11 um 12:07 Uhr)
-
Hi
gibt es einen Grund, warum du die Daten in einen String stopfst?
Ich halte String nicht gerade ideal für Binärdaten...
Schreib doch einfach das Bytearray wieder raus.
Gruß
-
20.04.11 11:32 #3
- Registriert seit
- May 2007
- Beiträge
- 3
Mein ganzes Programm baut eben auf String auf, aber wie du sagst ist String womöglich nicht die beste Variante. Hab's jetzt mit FileOutputStream gemacht:
Danke für den Hinweis. Wenn jemand allerdings wüsste, wie ich das Problem mit den Strings umgehen kann (ich benutze überall substrings und habe keine Ahnung wie das mit byteArrays funktioniert), wäre ich froh, mehr darüber zu erfahren. Ist das hier vielleicht ein Lösungsansatz? http://rgagnon.com/javadetails/java-0596.htmlCode java:1 2 3 4 5 6 7
RandomAccessFile ranFile2 = new RandomAccessFile("23.jpg","r"); byte[] bytearr2 = new byte[(int) ranFile2.length()]; ranFile2.seek(0); ranFile2.read(bytearr2,0,(int) ranFile2.length()); FileOutputStream fos = new FileOutputStream("test.jpg"); fos.write(bytearr2); fos.close();
Geändert von Darth Sitthiander (21.04.11 um 12:06 Uhr)
-
Dau du im Byearray jedes Byte durchnummeriert hast, sehe ich da überhaupt kein Problem:
Code java:1 2 3 4 5 6 7
public byte[] mein_ba_substr(byte[] daten, int start, int length) throws Exception { byte[] ret=new byte[length]; for(--lenght;length>=0;length--) ret[length]=daten[start+length]; return ret; }
Gruß
-
20.04.11 12:42 #5
- Registriert seit
- May 2007
- Beiträge
- 3
Vielen Dank =)
-
21.04.11 08:09 #6
- Registriert seit
- Aug 2005
- Ort
- Karlsruhe (Baden-Württemberg)
- Beiträge
- 905
Zur Vollständigkeit:
Um binärdaten als String zu speichern wird üblicherweise base64-Schreibweise verwendet. http://de.wikipedia.org/wiki/Base64Wäre super wenn ihr euren Code in dieser Form einfügt:
[java]System.out.println("Hello World");[/java]Code java:1
System.out.println("Hello World");
Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
Blog: http://javaeffective.wordpress.com/
Ähnliche Themen
-
String in Datum und wieder in String konvertieren
Von schlumsch im Forum JavaAntworten: 1Letzter Beitrag: 02.01.09, 19:04 -
<br /> wieder zurück-umwandeln
Von benurb im Forum PHPAntworten: 3Letzter Beitrag: 21.12.05, 18:59 -
Kann man einen md5 verschlüsselten text wieder umwandeln?
Von Templorials im Forum PHPAntworten: 1Letzter Beitrag: 24.08.04, 20:53 -
string umwandeln
Von blitzschaden im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 27.08.03, 11:40 -
String umwandeln
Von itsection im Forum Visual Basic 6.0Antworten: 6Letzter Beitrag: 05.05.03, 21:09





Zitieren

Login





