ID3v2 Attached Picture Frame auslesen

  • C#

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von NoIde.

    ID3v2 Attached Picture Frame auslesen

    Hallo alle zusammen,

    ich bin momentan dabei eine eigene ID3v2 Library (einfach nur um zu verstehen wie das ganze genau funktioniert) zu schreiben, welche bis dato auch super funktioniert.
    Jetzt würde ich gerne auch das Attached Picture auslesen (APIC).
    Folgendes (gekürzt) bekomme ich beim auslesen wenn ich das byte array zu einem string konvertiere:
    Spoiler anzeigen

    Quellcode

    1. ​image/jpegÿØÿàJFIF,,ÿÛC
    2. %# , #&')*)-0-(0%()(ÿÛC
    3. (((((((((((((((((((((((((((((((((((((((((((((((((((ÿÀèèÿÄÿÄO!1AQ"aq2‘#B¡±R3²ÁÑ$bátñ&6CSr‚’ð%'DTcƒ¢Â57s“ÿÄÿÄ-!1AQ"a2qB#C‘¡RÿÚ?üʨˆ€UP@{(¨
    4. Šˆ …! ˆ€‚ #›EC—U@A@PD* Dý‘R²€ÒÑf‚‹H4U‘(%QA`„5@@òª‘EÔj‘´
    5. ªbëìˆTT


    Hat schon mal jemand damit gearbeitet und weiß wie ich das ganze am besten verarbeiten kann um am ende nur das Bild zu haben?

    Danke im vorraus.
    Mein Spiel (hat noch keinen Namen): 40%
    @TheTrust3343 Das sieht so aus, als wenn Du eine Bilddatei im Notepad öffnest.
    Scheib mal das Byte-Array mit IO.File.WriteAllBytes() mit einer vernünftigen Extension auf Platte und öffne die Datei im IrfanView.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!
    Wenn du also beim APIC Frame angekommen bist, die Framegrösse ermittelt hast, wie auch die Flags ausgewertet hast, bist du beim Inahlt angekommen.



    Nun folgt:

    Quellcode

    1. <Header for 'Attached picture', ID: "APIC">
    2. Text encoding $xx
    3. MIME type <text string> $00
    4. Picture type $xx
    5. Description <text string according to encoding> $00 (00)
    6. Picture data <binary data>


    Also erstes Bytes auslesen für das Encoding,

    Quellcode



    dieses Encoding nutzen um den Null-Terminierten Mime-Typ-String auszulesen, das nun folgende Byte ist der PictureType

    Quellcode

    1. $00 Other
    2. $01 32x32 pixels 'file icon' (PNG only)
    3. $02 Other file icon
    4. $03 Cover (front)
    5. $04 Cover (back)
    6. $05 Leaflet page
    7. $06 Media (e.g. lable side of CD)
    8. $07 Lead artist/lead performer/soloist
    9. $08 Artist/performer
    10. $09 Conductor
    11. $0A Band/Orchestra
    12. $0B Composer
    13. $0C Lyricist/text writer
    14. $0D Recording Location
    15. $0E During recording
    16. $0F During performance
    17. $10 Movie/video screen capture
    18. $11 A bright coloured fish
    19. $12 Illustration
    20. $13 Band/artist logotype
    21. $14 Publisher/Studio logotype


    Nun folgt wieder ein NullTerminierter String für Beschreibung, der darf max. 64 Chars lang sein, auch wieder das ausgelesene Encoding. Der Rest(in diesem Frame) sind die Bytes des Images.
    Nun rechne Framesize - 1ByteForEncoding - MIME type String length(inkl. 0) - 1ByteForPicturetype - Description String length(inkl. 0)

    Diese Anzahl an Bytes nun auslesen, dann hast du das Bild in Form von Bytes und kannst diese auf die Platte schreiben. Wobei Typ beachten JPG, PNG etc...

    Hier auch mal schauen:
    id3.org/Developer Information
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „NoIde“ ()