Comment faire la différence entre le fichier image .BMP / .EMF d'origine avec le fichier .BMP / .EMF traitées?

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

Question

Summarization:

  1. Calculs soulignent d'une manière linéaire vers l'avant ce qui suit: A BMP image de 3289 X 4570 X 32bpp prend environ 53MB. L'image de même taille, mais 24bpp prend environ 43 Mo, celle de 16bpp prend environ 28Mo. fichier image-traitée ChemDraw doit ensuite être converti de 24bpp à 16bpp dans ma situation.

  2. comparaison plus poussée des données hexagonales des deux fichiers donne la compréhension plus détaillée de la différence entre l'image-traitée ChemDraw et l'image d'origine. Plus précisément, les magasins ChemDraw "de EMF_STRETCHDIBITS" au lieu de "EMF_STRETCHBLT". Il faut ajouter que « EMF_STRETCHDIBITS » peut être fait en appelant StretchDIBits lors de la copie pixels dans TMetafile / TMetafileCanvas. Il convient également de noter que les pixels pour « EMF_STRETCHDIBITS » devraient être les mêmes que celles pour « EMF_STRETCHBLT ».

  3. Malheureusement, jusqu'à présent, je ne trouve pas comment ChemDraw traite exactement et stocke les images collées. C'est-à-dire, je ne l'ai pas trouvé pourquoi les pixels ChemDraw est différent de stocké ce que je peux obtenir programingly.

    PS: Je vais voter des réponses aimables concernant cette question plus tard, parce que je n'ai pas assez réputation pour le moment. Merci pour tous ceux qui ont été gentil commentaire!

===

Salut,

Merci pour votre temps beaucoup!

Dites que j'ai une image nommée « sample_original.bmp ». La taille du fichier est 3289 X 4570, 43MB. Ensuite, je fais ce qui suit pour le convertir en un fichier .EMF (Windows Enhanced Metafile):

Méthode 1, en faisant un petit programme interne Delphi: (1) Charger le fichier image BMP. (2) obtenir le canevas de TMetafile (TMetafileCanvas) (3) Appel Canvas.Draw pour copier l'image. (4) Enregistrer dans un fichier .EMF, nommé "sample_original_bmp2emf_method1.emf"

Méthode 2: (1) Ouvrez le fichier image .BMP dans le programme mspaint, choisissez « tout sélectionner » et choisissez « copier ». (2) Ouvrez un programme externe appelé ChemDraw, créer un nouveau document et choisissez « coller ». (3) Ensuite, je choisissez d'enregistrer que dans le format .cdxml compatible XML, nommé « sample_original_bmp2emf_method2.cdxml ». (4) Le contenu de l'image (peut-être modifié ou dégradé?) Est maintenant enregistré dans le fichier sample_original_bmp2emf_method2.cdxml. Le format est codé en base64 format zlib compressé. (5) Je peux base64 décode la chaîne XML, zlib-décompressez-et enregistrez-le dans le fichier image "sample_original_bmp2emf_method2.emf".

La taille du fichier de sample_original_bmp2emf_method2.emf est inférieure de 15 Mo que sample_original_bmp2emf_method1.emf, mais la largeur et la hauteur a été maintenue. De plus, si j'ouvre « sample_original_bmp2emf_method2.emf » dans le programme de mspaint et de l'enregistrer de nouveau dans le format de fichier .bmp, un avertissement apparaît que des informations transparentes perd.

Pouvez-vous aider à faire des commentaires sur la façon de faire la différence « sample_original_bmp2emf_method1.emf » et « sample_original_bmp2emf_method2.emf »? Est-ce l'image plus petite parce que sa qualité diminue? En d'autres termes, les changements à mon image originale pourrait être faite par ce programme externe?

Les meilleurs voeux,

Les fichiers mentionnés ci-dessus peuvent être téléchargés dans l'adresse suivante:

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

PS: Je crois que Andreas Rejbrand a être assez aimable pour fait sa réponse et je donne ensuite mes commentaires. Mais je ne vois pas les maintenant. Est-il censé être un comportement normal du système? o_o

Était-ce utile?

La solution

Vous avez écrit:

  

base64 décode la chaîne XML, zlib-décompressez-et enregistrez-le dans le fichier image "sample_original_bmp2emf_method2.emf".

Il est donc définitivement pas un fichier fem, mais un format compressé .. Ou il a été converti en un autre format (comme vectorial) avant de convertir en XML. Dans ce cas, vous avez moins de données dans l'image résultant d'un réel bitmap.

Alors que la première méthode vous donnera un fichier fem avec une taille de seulement quelques octets plus gros qu'un fichier bmp ordinaire (à savoir les enregistrements fem utilisés pour encapsuler les données bitmap).

Si vous zip le fichier fem de la première méthode, je suis tout à fait sûr que vous obtiendrez un fichier avec une taille plus petite que le faux fem obtenu par la méthode à deux.

Autres conseils

Pourquoi ne pas comparer que les deux images? les ouvrir dans un programme d'édition de trame et de comparer les pixels.

Pourquoi vous soucier de la taille des fichiers sont? Certes, ce qui est important est de savoir si l'image est celle de droite.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top