LoadImage 函数不适用于 ImageMagick 创建的位图图像
LoadImage Function isn't Working With ImageMagick Created Bitmap Images
我正在尝试使用我的应用程序加载一些位图图像,以使用以下命令对使用 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
兼容?
我是运行这个应用程序在我的Windows7 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 Files\ImageMagick-7.0.6-Q16>Convert << SOURCE BMP >> -define bmp:format=bmp3 -crop -650 << DEST BMP >>
现在 LoadImage
API 函数可以很好地处理 ImageMagick 创建的位图图像。
我正在尝试使用我的应用程序加载一些位图图像,以使用以下命令对使用 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
兼容?
我是运行这个应用程序在我的Windows7 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 Files\ImageMagick-7.0.6-Q16>Convert << SOURCE BMP >> -define bmp:format=bmp3 -crop -650 << DEST BMP >>
现在 LoadImage
API 函数可以很好地处理 ImageMagick 创建的位图图像。