可以用fopen从png获取数据吗?

时间:2012-04-03 11:44:40

标签: c

是否可以使用fopen从灰度png获取数据,然后将其转换为与灰度相对应的整数?

FILE *fr;
int ch;
fr = fopen( "file_name.png", "rb" );
while ( (ch=fgetc(fr)) != EOF )
    printf( "%d", ch );
fclose( fr );

3 个答案:

答案 0 :(得分:2)

不是那么容易,您可以阅读有关文件格式的内容,例如维基百科:

http://en.wikipedia.org/wiki/Portable_Network_Graphics

我认为您最好的选择是使用像FreeImage这样的库来加载图像。

答案 1 :(得分:1)

简单的答案是肯定的!但要理解读取数据,您需要librarieshow PNG files are structured的深入了解。

我列出的库向您展示了如何读取png文件的分步过程。

答案 2 :(得分:1)

我不会碰libpng。太复杂了。

试试这个:http://nothings.org/stb_image.c

这很容易:

unsigned char *image;
int x, y, n;
image = stbi_load("easy.png", &x, &y, &n, 4);
/* process image here */
stb_image_free(image);