[Gelöst] Bilder per XML-Port exportieren bzw. importieren

5. August 2009 10:14

Guten Morgen liebe Forengemeinde,

ich wieder mal eine Frage:

Ich habe da eine Tabelle in der einige Daten aber unter anderem auch Bilder enthalten sind. Nun soll diese Tabelle Exportiert und Importiert werden können, und zwar nach XML.
Nun gibt es aber die Bilder, die als BLOB vorliegen. Mein Ansatz war folgender:
1. Erstellen eines Text-Tags (Text-Typ BigText)
2. Über einen Out- bzw. In-Stream die Daten aus dem Blob in den BigText speichern

Leider werden dann aber nicht, wie erwartet eine gangze Reihe von Hyroglyphen in die XML-Datei geschrieben sondern einfach nur "BMµ«h" oder andere, winzige Zeichenketten. Was kann das sein, bzw. was muss ich tun, damit es funktioniert?

PS:
Calcfields usw. habe ich natürlich gemacht...

Re: Bilder per XML-Port exportieren bzw. importieren

5. August 2009 10:28

Du könntest den Inhalt des BLOB-Feldes per BASE64 kodieren (so wie es jedes Mail-Programm mit Dateianhängen macht).
Auf mibuso hat mal jemand eine BASE64-Kodierung/-Dekodierung geschrieben, welche ich in meiner Tools-Sammlung aufgenommen habe:
  • EncodeDecodeManagement
    • Base64EncodeStream
      Diese Funktion erzeugt eine Base64-Zeichenfolge (als Stream) für den übergebenden (Binär-)Stream
    • Base64DecodeStream
      Diese Funktion erzeugt einen (Binär-)Stream für den übergebenen (Base64-)Stream

Re: Bilder per XML-Port exportieren bzw. importieren

5. August 2009 10:32

Ich probiere es sofort mal aus,

dankeschön für deine Antwort

Re: Bilder per XML-Port exportieren bzw. importieren

5. August 2009 11:14

Hm,

jetzt habe ich zwar Daten, aber weit mehr als mir lieb sind. Für einen Datensatz mit einem (recht kleinem) Bild wird eine XML-Datei erstellt die 96 MB groß ist.
Ich probiere mal einige andere Sachen aus um das ganze etwas kleiner zu bekommen.

Trotzdem Dankeschön erstmal

Re: Bilder per XML-Port exportieren bzw. importieren

5. August 2009 11:42

Steev hat geschrieben:jetzt habe ich zwar Daten, aber weit mehr als mir lieb sind. Für einen Datensatz mit einem (recht kleinem) Bild wird eine XML-Datei erstellt die 96 MB groß ist.

Wie groß/lang die BASE64-Ausgabe wird hängt nicht an den Bildabmessungen, sondern an der Datenmenge. Immerhin muss für jedes Bit eine ASCII-Ersetzung aus einem stark eingeschränkten Zeichensatz (nur 64 gültige Zeichen) gefunden werden.

Ich habe mal kurz den C/AL-Code überflogen:
3 Bytes (24 Bits) werden auf 4 ASCII-Zeichen verteilt (jedes Zeichen kann 2^6 Bits aufnehmen). (4 x 6 Bits = 3 x 8 Bits)
Als Faustformel würde ich also annehmen, dass die Ausgabe im BASE64-Format um genau 1/3 größer wird.

Vergleiche doch einfach mal die Dateigröße des originalen Bildes (Bild.bmp) mit der Dateigröße des reinen BASE64-Resultat (Bild.txt).

Fazit: Ein kleines Bitmap mit einer sehr hohen DPI-Zahl stellt eine relativ große Datei dar. Ergo müssen sehr viele Daten umgerechnet werden.

Re: Bilder per XML-Port exportieren bzw. importieren

5. August 2009 12:05

Genau das war es das kleine Bild hatte eine Auflößung von 400 (!) dpi.