Speichern eines Bildes effizient in einer XML-Datei

Ich derzeit ein Programm schreiben, das schafft und füllt Controls in einer WPF-Anwendung aus einer XML-Datei. Eines der Merkmale sind, dass der Benutzer kann wählen Sie ein Bild, das er anzeigen möchte, in das Programm. Dieses Bild erscheint in einem Bild-Steuerelement. Nach der Auswahl des Bildes, das Programm speichert alle Daten zurück in die XML-Datei.

Wird das Bild umgewandelt und gespeichert, wie folgt:

byte[] bytes = new byte[1];
MemoryStream ms = new MemoryStream();
System.Drawing.Image image = new Bitmap(sPathOfImage);

image.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
bytes = ms.ToArray();
XElement Image = new XElement("Image", Convert.ToBase64String(bytes));

xDocument.Add(Image);
xDocument.Save("xDocument.xml");

Und das funktioniert perfekt, alles ist in Ordnung. Jedoch, main problem ist die Länge des Wertes der XElement-Bild. Auch für 40kb Bilder die Länge ist 60.000 Zeichen. Und für eine 9mb Bild braucht es riesige 13,200,000 Zeichen. Und jetzt bin ich auf der Suche nach einem Weg eine bessere Lösung, um Bilder zu speichern in der XML-Datei.

Durch die technischen Daten werden in einer XML-Datei.

So, ist es eine gute Möglichkeit, um die Zeichenfolge kleiner werden, besser geeignet Strom, alles, was ich bin fehlt? Jeder Hinweis ist willkommen.

  • Ein anderes format verwenden, nicht BMP, aber vielleicht JPEG. Das würde eine Menge sparen.
  • Wenn das Bild bereits komprimiert ist, ich glaube nicht, dass Sie werde in der Lage sein, verkürzen Sie die saite viel. Sie könnten teilen Sie die "Zeichen" in mehrere Stücke.
  • Ist es ein muss zu halten Sie die image-Datei in der XML. Wäre nicht genug zu halten, innerhalb der XML-Datei ein relativer Pfad oder URL zu der Datei, und verteilen Sie die Datei zusammen mit der XML?
  • Und bitte beachten Sie, dass die erste Zeile in der Beispiel-code ist völlig überflüssig. Sie schreiben konnte byte[] bytes = ms.ToArray().
  • Ich habe versucht, verschiedene Arten, aber es ist die gleiche Sache jedes mal. Die Länge ist einfach viel zu lange.
  • Dann ist die Anforderung sollte geändert werden und das Bild gespeichert in einem externen Binär-Datei.
  • Es ist in der Tat ein muss. Ich WÜNSCHTE, ich könnte tun es so, wie du gesagt hast.
  • Jemand, der schreibt, eine Anforderung, die besagt, dass eine Bild-Datei so groß als 9 MB sein sollten, gespeichert in einer XML-Datei hat absolut keine Ahnung von was er spricht. Die Forderung ist Unsinn und muss geändert werden, ernst.
  • Um ehrlich zu sein, ich vermutete bereits, dass dies nicht eine richtige Lösung, aber ich hätte nie gedacht, dass es so schlimm ist. Ich Stimme völlig mit Ihnen.
  • Es gibt keinen Weg, es dauert, bis die gleiche Anzahl von bytes in JPEG - format, wie es in BMP...

InformationsquelleAutor Synn | 2013-12-17
Schreibe einen Kommentar