私はlibpngを初めて使用しました。ドキュメントは本当に混乱しています。 以下は動作していない私のコードですが、その理由がわかりません。 誰かが私を正しい方向に向けることができますか?または別の( "簡単")ライブラリを示唆していますか?はlibpngでpngファイルを読むことができません
は
png_create_info_struct
で
png_infop
を作成png_create_read_struct
で
png_structp
を作成rb
モードでを
fopen
でファイルを開く:私はのlibpngを理解する方法領域を割り当てる
が明らか
#include <stdio.h> #include <png.h> int main(int argc, char **argv) { int x, y; int height, width; png_structp png_ptr; png_infop info_ptr; png_bytep *row_pointers; FILE *fp = fopen("test.png", "rb"); { if (!fp) printf("File could not be opened for reading"); png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); info_ptr = png_create_info_struct(png_ptr); png_read_info(png_ptr, info_ptr); width = png_get_image_width(png_ptr, info_ptr); height = png_get_image_height(png_ptr, info_ptr); row_pointers = (png_bytep*) malloc(sizeof(png_bytep) * height); for (y=0; y<height; y++) row_pointers[y] = (png_byte*)malloc(png_get_rowbytes(png_ptr,info_ptr)); png_read_image(png_ptr, row_pointers); fclose(fp); } for (y=0; y<height; y++) { png_byte *row = row_pointers[y]; for (x=0; x<width; x++) { png_byte* ptr = &(row[x*4]); printf("Pixel at position [ %d - %d ] has RGBA values: %d - %d - %d - %d\n", x, y, ptr[0], ptr[1], ptr[2], ptr[3]); } } }
正確には動作しません。 – user7116
'png_create_read_struct'が失敗します。コンパイラはエラーを何も書いていないので、何もしません。 – user1281071
どうしてですか?より具体的にする必要があります。 – user7116