Come dire la differenza tra il file originale dell'immagine BMP / .EMF con il file BMP / .EMF trattati?

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

Domanda

riepilogo:

  1. I calcoli sottolineano in maniera straight-forward che: A .BMP immagine di 3289 X 4570 X 32bpp è di circa 53MB. L'immagine della stessa dimensione ma 24bpp dura circa 43MB, quella di 16bpp dura circa 28MB. file di immagine ChemDraw trasformati deve poi essere convertito da 24bpp a 16bpp nella mia situazione.

  2. Ulteriore confronto dei dati esadecimali di entrambi i file dà comprensione più dettagliata della differenza tra immagine ChemDraw trasformati e l'immagine originale. In particolare, i negozi ChemDraw "EMF_STRETCHDIBITS" invece di "EMF_STRETCHBLT". Va aggiunto che "EMF_STRETCHDIBITS" possono essere fatte chiamando StretchDIBits durante la copia dei pixel in TMetaFile / TMetaFileCanvas. Va inoltre osservato che "pixel per EMF_STRETCHDIBITS" dovrebbero essere le stesse di quelle per "EMF_STRETCHBLT".

  3. Purtroppo, fino ad ora non ho trovato il modo ChemDraw elabora e memorizza esattamente incollato le immagini. Vale a dire, non ho trovato il motivo per cui i pixel ChemDraw memorizzato è diverso da quello che posso ottenere programingly.

    PS: mi voterà fino risposte natura in relazione a questa domanda più tardi, perché non ho abbastanza reputazione per il momento. Grazie per tutti coloro che è stato gentile con commento!

===

Ciao,

Grazie per il vostro tempo molto!

dire che ho una foto di nome "sample_original.bmp". La dimensione del file è 3289 X 4570, 43MB. Poi faccio la seguente per convertirlo in un file EMF (Enhanced Metafile di Windows):

Metodo 1, facendo un piccolo programma di Delphi in-house: (1) Caricare il file di immagini BMP. (2) Ottenere la tela della TMetaFile (TMetaFileCanvas) (3) Chiamata Canvas.Draw per copiare l'immagine. (4) Salva il file EMF, denominato "sample_original_bmp2emf_method1.emf"

Metodo 2: (1) Aprire il file di immagine BMP nel programma MSPaint, scegliere "Seleziona tutto" e scegliere "copia". (2) Aprire un programma esterno chiamato ChemDraw, creare nuovo documento e scegliere "incolla". (3) Poi ho scegliere di salvare nel formato che .cdxml XML compatibile con il nome di "sample_original_bmp2emf_method2.cdxml". (4) Il contenuto di immagine (forse cambiato o degradato?) È stata salvata nel file sample_original_bmp2emf_method2.cdxml. Il formato è formato codificato Base64 zlib-compresso. (5) posso Base64 decodificare la stringa XML, zlib-decomprimerlo e salvarlo in un file immagine "sample_original_bmp2emf_method2.emf".

La dimensione del file di sample_original_bmp2emf_method2.emf è più piccolo di 15 MB di sample_original_bmp2emf_method1.emf, ma la larghezza e l'altezza è stata mantenuta. Inoltre, se apro "sample_original_bmp2emf_method2.emf" nel programma MSPaint e salvarlo di nuovo nel formato di file .bmp, un avvertimento compare di informazioni trasparenti sta perdendo.

Potrebbe aiutare a commentare su come dire la differenza "sample_original_bmp2emf_method1.emf" & "sample_original_bmp2emf_method2.emf"? È il quadro più piccolo, perché la sua qualità è diminuita? In altre parole, quello che cambia alla mia immagine originale potrebbe essere fatto da questo programma esterno?

Un caro saluto,

I file di cui sopra può essere scaricato al seguente url:

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

PS: Credo che Andreas ha Rejbrand essere così gentile da ha fatto la sua risposta e poi ho dato i miei commenti. Ma non riesco a vedere quelli ora. E 'dovrebbe essere un comportamento normale del sistema? o_o

È stato utile?

Soluzione

ha scritto:

  

Base64-decodifica la stringa XML, zlib-decomprimerlo e salvarlo in un file immagine "sample_original_bmp2emf_method2.emf".

Quindi è definitivamente non un file EMF, ma alcuni formato compresso .. O è stato convertito in un altro formato (come vettoriale) prima della conversione in XML. In questo caso, hai meno dati nella foto risultante di un vero e proprio bitmap.

considerando che il primo metodo vi darà un file EMF con una dimensione di soli pochi byte più grandi di una normale file bmp (vale a dire i record EMF utilizzato per incapsulare i dati bitmap).

Se si zip il file EMF del primo metodo, sono abbastanza sicuro che avrai un file con una dimensione più piccola della falsa fem ottenuto con il metodo due.

Altri suggerimenti

Perché non confrontare solo le due immagini? aprirli in un programma di modifica raster e confrontare i pixel.

Perché ti interessa quanto grande sia il file sono? Sicuramente ciò che è importante è se l'immagine è quella giusta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top