LoadImage 函数不适用于 ImageMagick 创建的位图图像

LoadImage Function isn't Working With ImageMagick Created Bitmap Images

本文关键字:位图 图像 创建 ImageMagick 函数 不适用 适用于 LoadImage      更新时间:2023-10-16

我正在尝试使用我的应用程序加载一些位图图像,以使用以下命令使用 ImageMagick 创建一些比较:

C:Program FilesImageMagick-7.0.6-Q16>Convert << SOURCE BMP >> -crop -650 << DEST BMP >>

上面的源位图图像使用LoadImageAPI 函数加载正常,但由 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兼容?

我正在我的Windows 7 64位机器上运行此应用程序,并安装了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/>

这些行位于 ImageMagick 创建的图像的 XML 元数据中。我检查了源图像,它没有这些行。

请帮助我在没有用户交互的情况下解决此问题。

我通过将我的 ImageMagick 命令更改为使用特定版本的位图格式来解决此问题,如下所示:

C:Program FilesImageMagick-7.0.6-Q16>Convert << SOURCE BMP >> -define bmp:format=bmp3 -crop -650 << DEST BMP >>

现在LoadImageAPI函数可以很好地与ImageMagick创建的位图图像一起使用。