LoadImage 函数不适用于 ImageMagick 创建的位图图像
LoadImage Function isn't Working With ImageMagick Created Bitmap Images
我正在尝试使用我的应用程序加载一些位图图像,以使用以下命令使用 ImageMagick 创建一些比较:
C:Program FilesImageMagick-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
兼容?
我正在我的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 >>
现在LoadImage
API函数可以很好地与ImageMagick创建的位图图像一起使用。
相关文章:
- LoadImage 函数不适用于 ImageMagick 创建的位图图像
- 将Qt qml文件转换为位图图像
- 如何通过用C++编写的代码将位图图像保存在Android设备中
- 创建位图图像未在窗口上打印
- 内存泄漏,许多位图图像C CLI
- C :阅读位图图像的问题
- 如何从scan0创建位图/图像
- 24位图图像和16位图图像中的RGB颜色
- C++,双线性插值以修补放大的位图图像上的孔
- C++中的位图图像处理
- 从位图图像文件读取像素数据值
- 如何让 WNDCLASS 将位图图像作为背景
- 位图图像未显示在CListCtrl报告视图中
- C++:将整数的文本文件转换为BMP格式的位图图像文件
- 如何在不使用外部库的情况下加载到 8 位C++位图图像
- 在Android NDK上通过JNI从OpenGL ES Framebuffer创建位图图像
- 读取位图图像时获取错误数据
- 在哪里可以找到 24 位位图图像 RLE 的示例
- 使用SFML在C++中将Glyph渲染为位图图像
- 将字节数组从位图图像读取到坐标X和Y中