16,471
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
#include "png.h"
#include <assert.h>
FILE*fp=fopen(fileName,"rb");
assert(fread(cpBuf,sizeof(char),BYTES_TO_CHECK,fp)==BYTES_TO_CHECK);
assert(!png_sig_cmp(cpBuf,0,BYTES_TO_CHECK));;
png_ptr=png_create_read_struct(PNG_LIBPNG_VER_STRING,NULL,NULL,NULL);
info_ptr=png_create_info_struct(png_ptr);
end_info=png_create_info_struct(png_ptr);
/*Setting up error handling.*/
if(setjmp(png_jmpbuf(png_ptr))){
png_destroy_read_struct(&png_ptr,&info_ptr,&end_info);
fclose(fp);
return NULL;
}
rewind(fp);
png_init_io(png_ptr,fp);
png_read_png(png_ptr,info_ptr,PNG_TRANSFORM_EXPAND|PNG_TRANSFORM_PACKING,NULL);
width=png_get_image_width(png_ptr,info_ptr);
height=png_get_image_height(png_ptr,info_ptr);
bit_depth=png_get_bit_depth(png_ptr,info_ptr);
color_type=png_get_color_type(png_ptr,info_ptr);
row_pointers=png_calloc(png_ptr, height*width*bit_depth);
assert(row_pointers!=NULL);
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
png_read_rows(png_ptr,row_pointers,NULL,height);
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
png_destroy_read_struct(&png_ptr,&info_ptr,&end_info);
fclose(fp);