LoadImage函数未使用ImageMagick创建的位图图像

时间:2017-08-23 10:26:54

标签: c++ bitmap loadimage

我正在尝试使用我的应用程序加载一些位图图像来进行一些比较,这些比较是使用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

根据我的研究,我发现this答案,因此,这可能是一个编码问题或类似问题。

不幸的是我无法使用任何工具,如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元数据。我查看了源图像,它没有那些行。

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

1 个答案:

答案 0 :(得分:1)

我通过更改我的ImageMagick命令来修复问题,以使用特定版本的Bitmap格式,如下所示:

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

现在LoadImage API函数可以正常使用ImageMagick创建的位图图像。