SDL_Image libpng错误:不是PNG文件。

3

我将尝试使用SDL_Image加载PNG图像:

代码如下:

int fname_len = 1024;
char fname[fname_len];
string pwd = getcwd(fname,fname_len);

strcat(fname,"/i/avatar.png");
struct stat buf;
if(stat(fname, &buf)) error("File does not exists",fname);

SDL_RWops *rwop = SDL_RWFromFile(fname, "rb");

SDL_Surface *img = 0;
img = IMG_LoadPNG_RW(rwop); // 6
if(!img) error("Failed to load",fname);

SDL_Texture *tx = tex[z] = SDL_CreateTextureFromSurface(ren, img); // 5
SDL_FreeSurface(img); // ~6
if(!tx) error("Failed to create texture from",fname);

项目文件

LIBS += -L/usr/lib -lSDL2 -lSDL_image

当我运行它时,它显示了一个错误:
Failed to load '/tmp/mygame/i/avatar.png': Error reading the PNG file.
libpng error: Not a PNG file

当尝试运行file命令时,它不存在:

# file /tmp/mygame/i/avatar.png
/tmp/mygame/i/avatar.png: PNG image data, 34 x 24, 8-bit/color RGBA, non-interlaced
ldd 命令的结果如下:
# ldd /tmp/mygame/mygame
    linux-vdso.so.1 (0x00007fffe9400000)
    libSDL2-2.0.so.0 => /usr/lib/libSDL2-2.0.so.0 (0x00007f0dd39b0000)
    libSDL_image-1.2.so.0 => /usr/lib/libSDL_image-1.2.so.0 (0x00007f0dd3790000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f0dd3488000)
    libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f0dd3270000)
    libc.so.6 => /usr/lib/libc.so.6 (0x00007f0dd2ec8000)
    libm.so.6 => /usr/lib/libm.so.6 (0x00007f0dd2bc0000)
    libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f0dd29b8000)
    libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f0dd2798000)
    librt.so.1 => /usr/lib/librt.so.1 (0x00007f0dd2590000)
    libSDL-1.2.so.0 => /usr/lib/libSDL-1.2.so.0 (0x00007f0dd22f8000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f0dd3c98000)

我在电脑上安装了可安装的libpng*库:

1 extra/libpng 1.6.9-1 [installed]
2 community/libpng12 1.2.50-4 [installed]
3 multilib/lib32-libpng 1.6.8-1 [installed]
4 multilib/lib32-libpng12 1.2.50-2 [installed]
5 catalyst/libpng12 1.2.50-1
6 aur/devkitppc-portlibs-libpng 1.5.4-2 (6)
7 aur/k3d-libpng.patch 0.8.0.1-1 (2)
8 aur/lib32-libpng14 1.4.12-1 (93)
9 aur/lib32-libpng15 1.5.18-1 (34)
10 aur/libpng-old 1.0.2-2 (8)
11 aur/libpng14 1.4.13-2 [installed] (251)
12 aur/libpng15 1.5.18-1 (121)

我哪里做错了?


你能发布图片文件或者替换成其他的吗?也许标题足以让文件识别它,但是图像主体损坏了,所以无法完全加载。 - Adam D. Ruppe
1
为什么您要连接 SDL2SDL_image?难道您不应该连接 SDL2_image 吗? - congusbongus
是的,我已经尝试使用GIMP重新保存它,但仍然没有成功。 - Kokizzu
以下是有关编程的内容的翻译,仅返回已翻译的文本:http://wikisend.com/download/656272/avatar1.png http://wikisend.com/download/233026/avatar.png(有效期为7天) - Kokizzu
@congusbongus 啊哈,你解决了我的问题^^ 谢谢!!! - Kokizzu
@congusbongus,您能发表一个答案吗?我会点赞的。 - Kokizzu
1个回答

4

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