ImageMagick错误:无法打开图像
ImageMagick Error: Unable to open image
我在我的应用程序中使用ImageMagick (magick++),但当试图加载图像时,我得到错误:
Unable to open image '??': Invalid argument @ error/blob.c/OpenBlob/2657
从在线阅读其他人的问题??
通常是试图加载的文件,我显然没有将文件位置??
传递给加载器-所以它似乎无法解决我给它的字符串。尝试使用Unicode和多字节。从示例中复制了项目设置。
代码:
LawlessFBXTexture* LawlessFBXTextureManager::CreateTexture(std::string pFullFilePath)
{
Magick::Image* img = nullptr;
Magick::Blob blob;
try
{
img = new Magick::Image();
img->read(pFullFilePath);
img->write(&blob, "RGBA");
}
catch (Magick::Error& Err)
{
std::string errstr = Err.what();
std::wstring stemps = std::wstring(errstr.begin(), errstr.end());
LPCWSTR sws = stemps.c_str();
OutputDebugString(L"FBXSDK: ERROR: ");
OutputDebugString(sws);
OutputDebugString(L"n");
int ImageNotFound = 0; /// Image Not found <---
assert(ImageNotFound);
}
LawlessFBXTexture* tex = new LawlessFBXTexture();
glGenTextures(1, &tex->TextureBuffer);
glBindTexture(GL_TEXTURE_2D, tex->TextureBuffer);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, img->columns(), img->rows(), 0, GL_RGBA, GL_UNSIGNED_BYTE, blob.data());
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
return tex;
}
LawlessFBXTexture* tex = CreateTexture("..\..\Asset\Models\LawlessCoreAsset\DEFAULT_DIFFUSE.png");
我注意到这在发布模式下工作得很好,不需要做任何更改。我很确定这是一个bug,所以我会把我的发现张贴在Magick论坛上。
所以,在接受OP的建议并将我的项目设置为发布模式后,一切都很顺利。也就是说,我很快意识到Debug模式存在的一个很好的理由。为一个不给出运行时错误消息的程序编写代码绝对是一件痛苦的事情。更不用说所有您喜欢的便利,如断点、断言等都消失了。
结果是,尽管为每个平台提供了多个二进制发行版,但根本没有可用的开发人员二进制文件。我的意思是,如果你想在使用magick++库时调试你的程序,你必须从源代码编译你的dll(使用调试配置来编译那些dll)。只有这样,您才能对链接到它的项目使用Debug编译模式。
这是我发现的讨论这个问题的线程。注意,在线程中,它说要构建静态库,但这显然是不必要的,使用动态库选项可能更方便。
无论如何,如果您按照我提供的链接中列举的步骤进行调试,您应该最终能够调试magick++程序,而不必费力:)
由于某些原因,Visual Studio中的 magick++ 不喜欢/MTd选项
Configuration Properties->C++->Code Generation->Runtime Library
Setting
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 增加 gil 读取图像错误
- 在图像上覆盖文本的程序会产生无休止的字符串错误
- 卤化物:较大图像的去马赛克算法错误.似乎适用于 16x16 图像
- 视觉C++:图像序列加载错误
- SFML 库未加载错误,找不到图像
- 使用 Nvidia NPP 调整图像大小时未记录的大小调整错误
- C++/openCV - 为什么显示图像会产生 Linux 分割错误?(打开CV错误?
- 张量流错误:执行器无法创建内核。没有注册'Snapshot' 适用于 GPU 设备的 OpKernel 运行图像标签示例
- SWscaler 错误的 SRC 图像指针
- Mat的convertTo函数在OpenCV中将灰度图像的类型转换为CV_32F时抱怨断言错误
- 幼稚的过滤返回错误的图像
- OPENCV IMREAD 8BPP PNG图像错误
- TBB免费图像lambda阵列比较错误
- GTK图像突然不会刷新任何错误或警告
- 试图均衡图像时的分割错误
- glDrawArrays的意外行为-参数顺序错误会产生所需的图像
- 尝试为图像缓冲区分配内存时 ptr 值错误
- 未能加载图像错误代码2