stbi_load无法加载图片

时间:2017-09-03 04:47:26

标签: c++

我正在尝试使用stbi_load()加载纹理。这是我的代码:

int width, height, numComponents;

unsigned char* imgData = stbi_load(fileName.c_str(), &width, &height, &numComponents, 4);

if (imgData == NULL)
    cout << "Cannot load texture" << endl;

//some code

//free

stbi_image_free(imgData);

当我运行该程序时,它会显示Cannot load texture。我不知道出了什么问题。我确信文件名是一个有效的路径,因为当我写:

std::ifstream infile(fileName);

if (infile.good())
{
    cout << "Good" << endl;
}
else
{
    cout << "Not good" << endl;
}

它产生Good。有人可以告诉我这段代码有什么问题导致imgData成为NULL(图片是*.jpg文件,如果有人想知道的话)。任何帮助将非常感谢!

修改:我运行stbi_failure_reason()并返回progressive jpeg。这是什么意思?

1 个答案:

答案 0 :(得分:2)

事实证明答案非常简单。如果您从本网站阅读:https://gist.github.com/roxlu/3077861

您会看到stb_image不支持progressive JPEG图片格式(我甚至不知道存在)