stbi_load_from_memory无法正确读取图片尺寸

时间:2017-06-27 22:51:00

标签: c image

我使用ld -r -b binary -o res.o *将一个包含多个png图像的文件夹嵌入到我的C程序中,其中一个名为font.png

在我的代码中,我使用此代码加载带有stb_image的嵌入式font.png

char* img;
int w, h, n;
extern char* _binary_font_png_start;
extern char* _binary_font_png_end;
img = (char*)stbi_load_from_memory((unsigned char*)_binary_font_png_start, _binary_font_png_end - _binary_font_png_start, &w, &h, &n, 4);

实际图像尺寸为256x128,但stbi给出的值为w(宽度)为0,h(高度)为2293200。出了什么问题?

1 个答案:

答案 0 :(得分:2)

最后设法通过更改我的代码使其工作如下:

char* img;
int w, h, n;
extern char _binary_font_png_start, _binary_font_png_end;
img = (char*)stbi_load_from_memory((unsigned char*)&_binary_font_png_start, &_binary_font_png_end - &_binary_font_png_start, &w, &h, &n, 4);

有点奇怪,但它有效,所以我猜它是正确的?无法找到关于这些符号链接到c代码的“预期”方式的任何文档,但似乎它们代表二进制数据结束/开始时的字符,而不是指向该字符的指针,因为我我期待。