stbi_failure_reason()返回无SOI,但文件加载

3

我正在使用stb_image_load加载一个png文件。代码看起来像这样

stbi_uc* pixels = stbi_load("textures/viking_room.png", &texWidth, &texHeight, &texChannels, STBI_rgb_alpha);
...

if (stbi_failure_reason()) std::cout << stbi_failure_reason();

if (!pixels) throw std::runtime_error("failed to load texture image!");


现在,stbi_failure_reason() 返回no SOI,但pixels不为空,并且完美地加载纹理。关于此问题的github上的第一个结果是关于畸形的png头文件,因此我使用pngcheck进行了检查,但它显示png文件没有问题。您有任何想法为什么会发生这种情况吗?我也遇到了加载此image的困难,但对于其他图像可以工作,有没有办法在将来避免这种情况?

3
如果我正确阅读文档,你应该只在stbi_load返回NULL时检查错误。看起来它返回了一个有效的指针,这表明没有错误。如果你阅读代码,它会检查不同的文件类型,直到找到与之匹配的类型。JPEG被检查在PNG之前,这就是为什么消息被设置为“no SOI”的原因。 - Retired Ninja
1个回答

1

这个问题在787上被提出,已经在更新的版本(2.27)中得到修复。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接