Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ lodepng,机顶盒图像。在我的系统中,在C++;_C++_Image_Load_Png_Sdl - Fatal编程技术网

C++ lodepng,机顶盒图像。在我的系统中,在C++;

C++ lodepng,机顶盒图像。在我的系统中,在C++;,c++,image,load,png,sdl,C++,Image,Load,Png,Sdl,我正在尝试将PNG或BMP加载到我的程序中。但我在网上找到的图书馆都不管用。我不知道为什么,但我总是得到“错误的PNG签名,它没有PNG或损坏”的每一个PNG当使用lodepng。使用SDL_loadBMP时,每个bmp的“未知像素格式”。使用stb_图像时,每个png的“未知图像类型” 我不能装任何东西。也许我的系统有问题?我用的是OSX约塞米蒂。这是代码 #include <iostream> #include <string> #define STB_IMAGE_I

我正在尝试将PNG或BMP加载到我的程序中。但我在网上找到的图书馆都不管用。我不知道为什么,但我总是得到“错误的PNG签名,它没有PNG或损坏”的每一个PNG当使用lodepng。使用SDL_loadBMP时,每个bmp的“未知像素格式”。使用stb_图像时,每个png的“未知图像类型”

我不能装任何东西。也许我的系统有问题?我用的是OSX约塞米蒂。这是代码

#include <iostream>
#include <string>
#define STB_IMAGE_IMPLEMENTATION

#include <lodepng.h>
#include <stb_image.h>

using namespace std;

int main (){
    string name = "res/img_test.png";
    const char * cstr = name.c_str();

    //lodepng
    unsigned char *buffer;
    unsigned int w,h;
    int result = lodepng_decode32_file(&buffer, &w, &h, cstr);
    cout << lodepng_error_text(result) << endl;

    //stb_image
    int x, y, comp;

    FILE *f = fopen(cstr, "rb");
    unsigned char *res;
    res = stbi_load_from_file(f,&x,&y,&comp,0);
    fclose(f);

    cout << stbi_failure_reason() << endl;

    return 0;
}
#包括
#包括
#定义机顶盒映像的实现
#包括
#包括
使用名称空间std;
int main(){
string name=“res/img_test.png”;
const char*cstr=name.c_str();
//洛德邦
无符号字符*缓冲区;
无符号整数w,h;
int result=lodepng\u decode32\u文件(&buffer,&w,&h,cstr);

cout>github.com/onatbas/png\u load\u test.git

我解决了它!谢谢大家的帮助。
毕竟,这不是代码问题。这是配置问题。我的cmake脚本在尝试将PNG和BMP复制到目标文件夹时会损坏它们。代码很好。

除非调用的函数实际失败,否则不要打印错误消息。例如,
lodepng\u decode32\u文件
stbi\u从\u文件加载\u
返回什么?哦,我假设您尝试加载的文件是一个实际的PNG图像,可以从其他程序加载?它们确实返回错误值。例如,lodepng返回28,代表“损坏的PNG头”它正在检查png头,我逐字节跟踪它。1 1 1 0 0 1。看起来是这样。第5、6、7字节是错误的。但是对于每个png???stb_图像也是一个错误值。你也可以说,因为尺寸仍然是0 0。缓冲区是空的,当将其加载到opengl texture2d中时,没有加载任何内容,所有内容都是黑色的。一个d对于BMP(我尝试使用SDL2)我得到了这个>>SDL_错误“SDL错误:文件不是Windows BMP文件”如果这些字节位于图像的开头,那么它肯定不是PNG图像,其标题应该是开始的。不,如果字节是应该的,它只是一个跟踪。第5、第6和第7个字节不匹配。但是就像我说的,对于每个PNG。我也尝试了这些图像库的测试文件。我有一些朋友给我发送了一些PNG,它们是t在他们的电脑中加载,但在我的电脑上加载失败。您是否使用协议(例如行结束翻译)通过网络传输文件?因为如果您查看我在上一条评论中链接到的标题,这些字节就是用来检测此类问题的。您是否查看了十六进制编辑器中的前八个字节?是否可以显示给我们吗?