Wie die Differenz zwischen der ursprünglichen .bmp / ??.EMF Bilddatei sagen, mit der verarbeiteten .BMP- / .EMF-Datei?

StackOverflow https://stackoverflow.com/questions/4358914

Frage

Summarization:

  1. Die Berechnungen zeigen in einer geradlinig Art und Weise heraus, dass: .bmp Bild von 3289 X 4570 X 32bpp über 53MB nimmt. Das Bild der gleichen Größe, aber mit 24 bpp dauert etwa 43MB, dass von 16 bpp über 28MB nimmt. ChemDraw-bearbeiteten Bilddatei muss dann von 24 bpp zu 16 bpp in meiner Situation umgewandelt werden.

  2. Ein weiterer Vergleich der Hex-Daten beiden Dateien gibt detaillierteres Verständnis der Differenz zwischen ChemDraw verarbeitete Bild und dem Originalbild. Insbesondere ChemDraw stores "EMF_STRETCHDIBITS" statt "EMF_STRETCHBLT". Es sollte hinzugefügt werden, dass „EMF_STRETCHDIBITS“ kann durch den Aufruf StretchDIBits getan werden, wenn Pixel in TMetafile / TMetafileCanvas kopieren. Es sollte auch beachtet werden, dass Pixel für „EMF_STRETCHDIBITS“ sollten die gleichen wie die für „EMF_STRETCHBLT“ sein.

  3. Leider bis jetzt habe ich nicht herausfinden, wie ChemDraw genau verarbeitet und speichert Bilder eingefügt. Das heißt, ich habe nicht herausfinden, warum die Pixel ChemDraw ist anders gelagert, was ich programingly erhalten kann.

    PS: Ich werde später Art Antworten zu dieser Frage abstimmen, weil ich für den Moment genug Ruf nicht habe. Vielen Dank für alle, die Art Kommentar!

  4. hat

===

Hallo,

Vielen Dank für Ihre Zeit sehr viel!

sagen, dass ich ein Bild „sample_original.bmp“ genannt haben. Die Dateigröße ist 3289 X 4570, 43MB. Dann gehen Sie wie folgt ich es in eine .EMF-Datei zu konvertieren (Enhanced Windows Metafile):

Methode 1, durch ein kleines Haus Delphi-Programm machen: (1) Laden der .BMP- Bilddatei. Einholen (2), um die Leinwand von TMetafile (TMetafileCanvas) (3) Aufruf Canvas.Draw das Bild zu kopieren. (4) Speicher .EMF Datei mit dem Namen "sample_original_bmp2emf_method1.emf"

Methode 2: (1) Öffnen Sie die .bmp Bilddatei im mspaint Programm, wählen Sie „Alles auswählen“, und wählen Sie „Kopieren“. (2) öffnen Sie ein externes Programm aufgerufen ChemDraw, neues Dokument, und wählen Sie „Einfügen“. (3) Dann wählte ich zu speichern, dass in dem XML-kompatibelen .cdxml Format "sample_original_bmp2emf_method2.cdxml" genannt. (4) Der Inhalt des Bildes (vielleicht verändert oder verschlechtert?) Wird nun in der sample_original_bmp2emf_method2.cdxml-Datei gespeichert. Das Format wird zlib-komprimiertes Format Base64-kodiert. (5) Ich kann Base64-decode die XML-String, zlib-dekomprimieren, und speichern Sie sie in die Bilddatei "sample_original_bmp2emf_method2.emf".

Die Dateigröße von sample_original_bmp2emf_method2.emf kleiner von 15 MB als sample_original_bmp2emf_method1.emf, aber die Breite und Höhe beibehalten wurde. Außerdem, wenn ich „sample_original_bmp2emf_method2.emf“ im mspaint Programm öffnen und speichern Sie es zurück in .bmp-Dateiformat, eine Warnung erscheint, dass transparente Informationen verlieren.

Könnten Sie helfen zu kommentieren, wie der Unterschied zu erkennen „sample_original_bmp2emf_method1.emf“ & „sample_original_bmp2emf_method2.emf“? Ist das Bild kleiner, weil seine Qualität verringert wird? Mit anderen Worten: Was ändert sich in meinem Originalbild möglicherweise von diesem externen Programm vorgenommen werden könnten?

Mit freundlichen Grüßen

Die genannten Dateien, die oben in der folgenden URL heruntergeladen werden:

http://www.rapidspread.com/file.jsp?id=2ighvzoci8

PS: Ich glaube, dass Andreas Rejbrand Art genug hat zu seiner Antwort gemacht und ich habe dann meine Kommentare. Aber ich kann nicht die jetzt sehen. Soll es ein normales Verhalten des Systems sein? o_o

War es hilfreich?

Lösung

Sie schrieb:

Base64-decode die XML-String, zlib-dekomprimieren, und speichern Sie sie in die Bilddatei "sample_original_bmp2emf_method2.emf".

Es ist also definitiv nicht eine emf-Datei, aber einige ZIP-Format .. Oder es wurde in ein anderes Format (wie vektorielle) umgewandelt, bevor sie in XML zu konvertieren. In diesem Fall haben Sie weniger Daten auf dem Bild als eine echte Bitmap.

Während die erste Methode gibt Ihnen eine emf-Datei mit einer Größe von nur wenigen Bytes größer als eine reine BMP-Datei (das heißt die emf Aufzeichnungen verwendet, um die Bitmap-Daten zu kapseln).

Wenn Sie die emf-Datei des ersten Verfahrens zip, ich bin ziemlich sicher, dass Sie mit einer kleineren Größe einer Datei erhalten werden als die falsche emf erhalten nach Methode zwei.

Andere Tipps

Warum Sie nicht nur die beiden Bilder vergleichen? Öffnen Sie sie in einem Raster-Schnittprogramm und vergleichen Sie die Pixel.

Warum interessieren Sie sich, wie groß die Dateien sind? Sicher, was wichtig ist, ist, ob das Bild das richtige ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top