Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Bilder sinnvoll in XML speichern (https://www.delphipraxis.net/52533-bilder-sinnvoll-xml-speichern.html)

CalganX 30. Aug 2005 16:19


Bilder sinnvoll in XML speichern
 
Hi,
ich würde gerne Bilder in einer XML-Datei speichern und zwar so, dass sie unter C# problemlos geladen und geschrieben werden können.
Hat da jemand eine gute Idee, wie man das sinnvoll anstellen könnte?

Chris

Grendel 30. Aug 2005 16:22

Re: Bilder sinnvoll in XML speichern
 
Du könntest z.B. die Bilder hexadezimal oder Base64 encodiert ins xml einfügen und nach dem Auslesen wieder in Binärdaten umwandeln.

Bis neulich ...

CalganX 30. Aug 2005 16:33

Re: Bilder sinnvoll in XML speichern
 
Hi,
Zitat:

Zitat von Grendel
Du könntest z.B. die Bilder hexadezimal oder Base64 encodiert ins xml einfügen und nach dem Auslesen wieder in Binärdaten umwandeln.

ich schätze dann aber mal, dass die XML-Datei unermesslich groß wird, da ja wiederrum jede Darstellung erneut 8bit pro Zeichen benötigt und dadurch das ganze ja acht mal größer werden sollte, als die Ausgangsdatei, oder? :gruebel:

Chris

Tubos 30. Aug 2005 16:38

Re: Bilder sinnvoll in XML speichern
 
Schau dir mal Base64 an. Kenne ich nicht wirklich, aber nach Überfliegen des Wikipedia-Artikels stelle ich fest dass man für 6 Bit (= 0,75 Byte) ein Zeichen braucht - es geht also nicht besonders viel Speicherplatz drauf.

Würde mich aber interessieren ob man es irgendwie anstellen kann das gar kein Platz verloren geht obwohl XML verwendet wird.

dizzy 30. Aug 2005 16:50

Re: Bilder sinnvoll in XML speichern
 
Zitat:

Zitat von Tubos
Würde mich aber interessieren ob man es irgendwie anstellen kann das gar kein Platz verloren geht obwohl XML verwendet wird.

Da XML so einfach keine Binärdaten zulässt (da reservierte Ausdrücke für die Strukturierung existieren, die eine Binärdatei "zufällig" produzieren könnte), geht es an sich nicht ohne Konvertierung nach Base64. Um aber Platz zu sparen könnte man sich (vorm Base64) einer Kompression bedienen. RLE, Huffman oder LZW-Typen sind mal ein paar die Verlustfrei arbeiten, wobei RLE eher geringe Kompression verspricht (ja nach Bildinhalt), dafür aber recht simpel ist vergl. zu den anderen beiden.
Falls Verluste nicht das Problem sind: JPEG in Base64 und das ins XML ;) (Oder PNG/GIF für verlustfrei - da spart man sich das Selbstschreiben eines Kompressors.)

Robert Marquardt 30. Aug 2005 17:14

Re: Bilder sinnvoll in XML speichern
 
Das XPM File Format, das unter Linux gebraeuchlich ist, koennte das geeignetste sein.

Hador 30. Aug 2005 17:37

Re: Bilder sinnvoll in XML speichern
 
Zitat:

Zitat von dizzy
wobei RLE eher geringe Kompression verspricht (ja nach Bildinhalt), dafür aber recht simpel ist vergl. zu den anderen beiden.

In der Codelib gibts den in Pascal umgesetzten Huffman Algo.

Und sonst: Huffman,

bigg 30. Aug 2005 17:43

Re: Bilder sinnvoll in XML speichern
 
Hi, :)

was hälst du davon, nur den Dateipfad des Bildes in die XML-Datei zu schreiben?
Oder ist dir das zu unprofessionell?

CalganX 30. Aug 2005 19:03

Re: Bilder sinnvoll in XML speichern
 
Hi,
danke für die Ideen. Ich werde sie mir noch genauer ansehen, wenn ich mal wieder etwas Zeit habe. :)

@bigg: Das Problem ist, dass ich eigentlich alles in einer Datei haben möchte und nicht alles herumfliegen lassen will. Sonst kommt ein User auf die Idee einfach mal die Bilddateien zu löschen oder sowas. Alles in der XML-Datei ist einfach... praktischer. ;)

Chris

mschaefer 30. Aug 2005 19:49

Re: Bilder sinnvoll in XML speichern
 
Moin, moin,

Bin der Auffassung, das XML das Format der Wahl für den Dateiaustausch zwischen sonst inkompatiblen Systemen ist.
Damit ist die Dateigröße kein wirkliches Argument. Zumindest nicht für den Anfang eines solchen Projektes.
Wenn das ein Argument wäre, dann würde man die gepackten Bildformate nehmen.

Da die die Standartschrift für Kommandos reserviert ist und hier kein Parser ducheinander kommen soll,
würde ich das zunächst mal ganz trivial anfangen:

1: in XML setze Bildangangstoken <Picture>
2: Speicher das Bild in einen Stream
3: greife byteweise jedes Bildbyte aus dem Stream
4: Teile das Bildbyte in zwei xml-Bytes.
Dabei könnten die unteren vier Bits
jeweils komplett gesetzt werden und
auf die zwei oberen vier Bitbereiche
teilst Du das Bildbyte auf.
5: setze Bildendtoken </Picture>


Grüße // Martin


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz