Ich fasse nochmal kurz zusammen:
- Du möchtest Bilddaten speichern.
- Du möchtest Bilddaten in einer finalen SVG referenzieren. Dies geht nur mit Data URIs, da echte Pfade von deiner ImageMagick-Installation nicht unterstützt werden.
Die Frage ist nun, was das beste Speicherformat für die Bilddaten ist, um sie später gezielt im SVG einzusetzen.
In einer XML-Datei Data URIs zu speichern, ist eher eine schlechte Lösung, wenn man immer die ganze Datei laden muss, bevor man mit den Daten arbeiten kann. Als einfache Lösung bietet sich z. B. ein SAX-Parser an. Hierbei ist es meist so, dass du bei einer Callback-Funktion, die für jedes gefundene Element (ggf. sogar entsprechend einem von dir gewählten Filterschema) aufgerufen wird, die Möglichkeit hast, die Daten zu speichern. Der Vorteil ist, dass nicht alle Daten auf einmal im Arbeitsspeicher Platz finden müssen.
Die (relationale) DB hat den Vorteil, dass du die Bilder auch später anderweitig in der DB referenzieren kannst. Selbst in der DB würde ich keine Data URIs speichern, sondern nur die Pfade zu den Originalbildern. Die Data URIs würde ich "on the fly" generieren - natürlich mit einem Cache dieser in Dateien. Die Pfade zu den Cache Dateien kannst du ggf. auch in der DB speichern. Aber wenn du keine DB möchtest, kannst du auch nur mit dem Dateisystem arbeiten.
Wie viel eingebettete Bilder landen denn endgültig in einer SVG-Datei?