/* * Sample program to generate a small test PNG image. */ #include #include #include #include #include "png.h" int main(argc, argv) int argc; char *argv[]; { FILE *out = stdout; png_structp png_ptr; png_infop info_ptr; png_text text[] = { #define TEXT(k,t) { PNG_TEXT_COMPRESSION_NONE, k, t, strlen(t) } TEXT("Title", "Sample image"), TEXT("Author", getlogin()), TEXT("Description", "A sample image"), TEXT("Copyright", "Public domain"), /* TEXT("Creation Time", png_convert_to_rfc1123(time(0))), */ TEXT("Software", argv[0]), TEXT("Disclaimer", ""), TEXT("Warning", "Just an example"), TEXT("Source", "my arse"), TEXT("Comment", "It's a bit nippy today."), }; png_byte line[32]; int i, j; png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, (png_voidp)NULL, NULL, NULL); if (!png_ptr) errx(1, "png_create_write_struct"); info_ptr = png_create_info_struct(png_ptr); if (!info_ptr) errx(1, "png_create_info_struct"); if (setjmp(png_jmpbuf(png_ptr))) /* All future errors jump here */ errx(1, "png error"); png_init_io(png_ptr, out); /* png_set_write_status_fn(png_ptr, NULL); */ /* png_set_filter(png_ptr, 0, ...); */ png_set_compression_level(png_ptr, Z_BEST_COMPRESSION); png_set_IHDR(png_ptr, info_ptr, 32, /* width */ 32, /* height */ 8, /* bit depth */ PNG_COLOR_TYPE_GRAY, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); /* png_set_sBIT(png_ptr, info_ptr, 8); */ #if 0 png_set_text(png_ptr, info_ptr, text, sizeof text / sizeof text[0]); #endif #if 0 png_set_pHYs(png_ptr, info_ptr, 1, /* horiz pixels/unit */ 1, /* vert pixels/unit */ PNG_RESOLUTION_UNKNOWN); png_set_oFFs(png_ptr, info_ptr, 0, /* x offset */ 0, /* y offset */ PNG_OFFSET_PIXEL); png_set_sCAL(png_ptr, info_ptr, 1, /* unit */ 1, /* width in units */ 1); /* height */ #endif /* png_set_rows(png_ptr, info_ptr, imgrows); png_write_png(png_ptr, info_ptr, PNG_TRANSFORM_IDENTITY, NULL); */ png_write_info(png_ptr, info_ptr); for (i = 0; i < 32; i++) { for (j = 0; j < 32; j++) line[j] = (i + j) * 4; png_write_row(png_ptr, line); } png_write_end(png_ptr, info_ptr); png_destroy_write_struct(&png_ptr, &info_ptr); fclose(out); exit(0); }