tutorials.de Buch-Aktion 05/2012
Like Tree3Danke
  • 1 Beitrag von sheel
  • 1 Beitrag von sheel
  • 1 Beitrag von Anime-Otaku
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
343
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Darth Sitthiander Darth Sitthiander ist offline Grünschnabel
    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)
     

  2. #2
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.503
    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ß
    Darth Sitthiander bedankt sich. 

  3. #3
    Darth Sitthiander Darth Sitthiander ist offline Grünschnabel
    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:
    Code 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();
    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.html
    Geändert von Darth Sitthiander (21.04.11 um 12:06 Uhr)
     

  4. #4
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.503
    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ß
    Darth Sitthiander bedankt sich. 

  5. #5
    Darth Sitthiander Darth Sitthiander ist offline Grünschnabel
    Registriert seit
    May 2007
    Beiträge
    3
    Vielen Dank =)
     

  6. #6
    Anime-Otaku Anime-Otaku ist offline Mitglied Brillant
    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/Base64
    Darth Sitthiander bedankt sich. 
    Wäre super wenn ihr euren Code in dieser Form einfügt:
    Code java:
    1
    
    System.out.println("Hello World");
    [java]System.out.println("Hello World");[/java]
    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

  1. Antworten: 1
    Letzter Beitrag: 02.01.09, 19:04
  2. <br /> wieder zurück-umwandeln
    Von benurb im Forum PHP
    Antworten: 3
    Letzter Beitrag: 21.12.05, 18:59
  3. Antworten: 1
    Letzter Beitrag: 24.08.04, 20:53
  4. string umwandeln
    Von blitzschaden im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 27.08.03, 11:40
  5. String umwandeln
    Von itsection im Forum Visual Basic 6.0
    Antworten: 6
    Letzter Beitrag: 05.05.03, 21:09

Stichworte