Как отличить исходный файл изображения .BMP / .EMF от обработанного файла .BMP / .EMF?

Обобщение:

  1. Расчеты прямо указывают на то, что: .BMP-изображение 3289 X 4570 X 32bpp занимает около 53 МБ . Изображение того же размера, но с разрешением 24 бит на пиксель, занимает около 43 МБ, изображение с 16 бит на пиксель занимает около 28 МБ. Файл изображения, обработанный ChemDraw, в моей ситуации должен быть преобразован из 24bpp в 16bpp.

  2. Дальнейшее сравнение шестнадцатеричных данных обоих файлов дает более детальное понимание разница между обработанным ChemDraw изображением и исходным изображением. В частности, ChemDraw хранит «EMF_STRETCHDIBITS» вместо «EMF_STRETCHBLT». Следует добавить, что «EMF_STRETCHDIBITS» можно выполнить, вызвав StretchDIBits при копировании пикселей в TMetaFile/TMetaFileCanvas. Также следует отметить, что пиксели для «EMF_STRETCHDIBITS» должны быть такими же, как и для «EMF_STRETCHBLT».

  3. К сожалению, до сих пор я не узнал как ChemDraw точно обрабатывает и сохраняет вставленные изображения. То есть я не выяснил, почему пиксели, хранящиеся в ChemDraw, отличаются от тех, которые я могу получить программно.

    PS: Я проголосую за добрые ответы на этот вопрос позже, потому что я не иметь достаточную репутацию на данный момент. Спасибо всем, кто любезно прокомментировал!

===

Привет,

Большое спасибо за ваше время!

Скажите, что у меня есть изображение с именем «sample_original.bmp». Размер файла 3289 X 4570, 43 МБ. Затем я делаю следующее, чтобы преобразовать его в файл .EMF (Enhanced Windows MetaFile):

Метод 1, создав небольшую собственную программу Delphi: (1) Загрузите файл изображения .BMP . (2) Получить Canvas TMetaFile (TMetaFileCanvas) (3) Вызвать Canvas.Draw, чтобы скопировать изображение. (4) Сохранить в файл .EMF с именем «sample_original_bmp2emf_method1.emf»

Метод 2 : (1) Откройте файл изображения .BMP в программе mspaint, выберите «выбрать все» и выберите «копировать». (2) Откройте внешнюю программу под названием ChemDraw, создайте новый документ и выберите «вставить». (3) Затем я решил сохранить это в XML-совместимом формате .cdxml с именем «sample_original_bmp2emf_method2.cdxml». (4) Содержимое изображения (может быть изменено или ухудшено?) Теперь сохраняется в файле sample_original_bmp2emf_method2.cdxml. Это сжатый формат zlib с кодировкой Base64. (5) Я могу декодировать строку XML с помощью Base64, распаковать ее с помощью zlib и сохранить в файл изображения «sample_original_bmp2emf_method2.emf».

Размер файла sample_original_bmp2emf_method2.emf на 15 МБ меньше, чем sample_original_bmp2emf_method1.emf, но ширина и высота сохраняются. Более того, если я открою «sample_original_bmp2emf_method2.emf» в программе mspaint и сохраню его обратно в файл .bmp2. появляется предупреждение о том, что прозрачная информация теряется.

Не могли бы вы прокомментировать, как отличить «sample_original_bmp2emf_method1.emf» & «sample_original_bmp2emf_method2. emf «? Изображение меньше, потому что его качество ухудшилось? Другими словами, какие изменения в исходное изображение могут быть внесены этой внешней программой?

С наилучшими пожеланиями,

Указанные выше файлы можно загрузить по следующему URL-адресу:

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

PS: Я считаю, что Андреас Рейбранд был достаточно любезен, чтобы дать свой ответ, и я тогда дал свои комментарии. Но я не вижу их сейчас. Это должно быть нормальное поведение системы? O_o


Вы писали:

Base64-декодируйте строку XML, zlib-распакуйте ее и сохраните в файл изображения «sample_original_bmp2emf_method2.emf».

Таким образом, это определенно НЕ файл emf, а какой-то заархивированный формат … Или он был преобразован в другой формат (например, векторный) перед преобразованием в XML. В этом случае у вас меньше данных в полученное изображение, чем реальное растровое изображение.

Тогда как первый метод даст вам файл emf с размером onl y на несколько байтов больше, чем обычный файл BMP (т.е. записи emf, используемые для инкапсуляции растровых данных).

Если вы заархивируете файл emf первого метода, я уверен, что вы получите файл с меньшим размером, чем ложная emf получено методом два.


Почему бы вам просто не сравнить два изображения? Откройте их в программе редактирования растров и сравните пиксели.

Почему вас волнует размер файлов? Конечно, важно то, правильное изображение или нет.


Почему бы вам просто не сравнить два изображения? Откройте их в программе редактирования растров и сравните пиксели.

Почему вас волнует размер файлов? Конечно, важно то, правильное ли изображение.

Оцените статью
techsly.ru
Добавить комментарий