Я пытаюсь загрузить некоторые растровые изображения с моим приложением, чтобы сделать некоторые сравнения, созданные с помощью ImageMagick с помощью следующей команды:
C:\Program Files\ImageMagick-7.0.6-Q16>Convert << SOURCE BMP >> -crop -650 << DEST BMP >>
Над исходным растровым изображением загружается нормально с LoadImage
Функция API, но изображение, созданное ImageMagick (целевое растровое изображение), не загружается.
Как я использую LoadImage
Функция:
HBitmapRight = (HBITMAP)LoadImage(nullptr, L"C:\\DEST.bmp", IMAGE_BITMAP, NULL, NULL, LR_LOADFROMFILE);
HBitmapRight = (HBITMAP)LoadImage(nullptr, L"C:\\SOURCE.bmp", IMAGE_BITMAP, NULL, NULL, LR_LOADFROMFILE);
я использовал GetLastError
, но он вернулся ERROR_SUCCESS
,
После моего исследования я нашел этот ответ и так, это может быть проблема кодировки или что-то подобное.
К сожалению, я не могу использовать такие инструменты, как MS Paint или Photoshop, но я могу использовать только ImageMagick, потому что это сравнение выполняется с использованием командной строки без взаимодействия с пользователем.
Можно ли установить какие-либо специальные флаги кодирования для использования с ImageMagick, чтобы создаваемые им растровые изображения могли быть совместимы с LoadImage
?
Я запускаю это приложение на моем 64-разрядном компьютере с Windows 7, и установленный ImageMagick также является последней 64-разрядной версией. Компилятор MS Visual C ++
2017.
Это строки, которые вызывают проблему:
<Mask>
<Red/>
<Green/>
<Blue/>
<Alpha/>
</Mask>
<ColorSpaceType/>
<CIEXYZEndPoints>
<Red>
<X/>
<Y/>
<Z/>
</Red>
<Green>
<X/>
<Y/>
<Z/>
</Green>
<Blue>
<X/>
<Y/>
<Z/>
</Blue>
</CIEXYZEndPoints>
<Intent/>
Эти строки находятся в метаданных XML изображения, созданного ImageMagick. Я проверил с исходным изображением, у него нет этих строк.
Пожалуйста, помогите мне решить эту проблему без взаимодействия с пользователем.
Я исправил проблему, изменив команду ImageMagick на использование определенной версии формата растрового изображения, например:
C:\Program Files\ImageMagick-7.0.6-Q16>Convert << SOURCE BMP >> -define bmp:format=bmp3 -crop -650 << DEST BMP >>
Сейчас LoadImage
Функция API прекрасно работает с созданными ImageMagick растровыми изображениями.
Других решений пока нет …