NoDecodeDelegateForThisImageFormat使用ImageMagick读取.png文件时出错

时间:2014-04-11 17:10:40

标签: c++ image opengl textures blender

我正在尝试使用ImageMagick来加载使用ASSIMP库的Mesh(在Blender中制作)纹理。网格有一种材质和一种纹理。

我试图遵循两个教程:Tutorial38Tutorial22

以下代码块是有问题的地方;

bool Texture::Load()
{
    try {
        m_pImage = new Magick::Image(m_fileName); /* RIGHT HERE IT OCCURS */
        m_pImage->write(&m_blob, "RGBA");
    }
    catch (Magick::Error& Error) {
        std::cout << "Error loading texture '" << m_fileName << "': " << Error.what() << std::endl;
        return false;
    }

    glGenTextures(1, &m_textureObj);
    glBindTexture(m_textureTarget, m_textureObj);
    glTexImage2D(m_textureTarget, 0, GL_RGBA, m_pImage->columns(), m_pImage->rows(), 0, GL_RGBA, GL_UNSIGNED_BYTE, m_blob.data());
    glTexParameterf(m_textureTarget, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameterf(m_textureTarget, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

    return true;
}

它几乎立即退出Try-Catch并显示当前错误:

&#34;加载纹理时出错,&#39; Resources / white.png&#39;:myproject.exe:NoDecodeDelegateForThisImageFormat&#39; Resources / white.png&#39;误差/ constitute.c / ReadImage / 550

据我所知,ImageMagick已正确安装,我已经多次尝试手动编译它但我总是在新的libs中遇到Unresolved External错误(它们似乎大2-3 MB比项目所包含的那些)。

尝试的版本:

的ImageMagick-6.6.5-10 ImageMagick的-6.6.0 ImageMagick的-6.8.9 ImageMagick-windows从他们的说明页面压缩。

尝试自安装程序二进制文件时遇到的一个大问题是,当代码需要时,它们不包括Release Candidate和Debug lib。虽然我编译的源代码版本不正确并导致未解决的外部错误,或者没有明确存放其Include和Lib文件夹。

我已经联系了本教程的开发人员,但他到目前为止唯一说的是我可能安装了错误版本的ImageMagick并且与他包含的版本不兼容......不说哪个版本是正确的。

编辑 - 1: - 从Here尝试安装/重新安装libpng没有变化。

1 个答案:

答案 0 :(得分:1)

嗯,令人尴尬的是,我经过三个多月的精心折磨后找到了解决方案,而且是将编译器切换到&#34; Release&#34;模式而不是&#34; Debug&#34;。我不再抱怨并且完全加载了我的纹理。

不工作&#34;调试&#34;模式似乎是ImageMagick的一个错误或Visual Studios 2010的一个错误,我想我会提交错误报告。