?? pngtest.c
字號:
zero_samples=0; png_set_write_user_transform_fn(write_ptr, count_zero_samples);#endif#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)# ifndef PNG_HANDLE_CHUNK_ALWAYS# define PNG_HANDLE_CHUNK_ALWAYS 3# endif png_set_keep_unknown_chunks(read_ptr, PNG_HANDLE_CHUNK_ALWAYS, png_bytep_NULL, 0);#endif#if defined(PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED)# ifndef PNG_HANDLE_CHUNK_IF_SAFE# define PNG_HANDLE_CHUNK_IF_SAFE 2# endif png_set_keep_unknown_chunks(write_ptr, PNG_HANDLE_CHUNK_IF_SAFE, png_bytep_NULL, 0);#endif png_debug(0, "Reading info struct\n"); png_read_info(read_ptr, read_info_ptr); png_debug(0, "Transferring info struct\n"); { int interlace_type, compression_type, filter_type; if (png_get_IHDR(read_ptr, read_info_ptr, &width, &height, &bit_depth, &color_type, &interlace_type, &compression_type, &filter_type)) { png_set_IHDR(write_ptr, write_info_ptr, width, height, bit_depth,#if defined(PNG_WRITE_INTERLACING_SUPPORTED) color_type, interlace_type, compression_type, filter_type);#else color_type, PNG_INTERLACE_NONE, compression_type, filter_type);#endif } }#if defined(PNG_FIXED_POINT_SUPPORTED)#if defined(PNG_cHRM_SUPPORTED) { png_fixed_point white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y; if (png_get_cHRM_fixed(read_ptr, read_info_ptr, &white_x, &white_y, &red_x, &red_y, &green_x, &green_y, &blue_x, &blue_y)) { png_set_cHRM_fixed(write_ptr, write_info_ptr, white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y); } }#endif#if defined(PNG_gAMA_SUPPORTED) { png_fixed_point gamma; if (png_get_gAMA_fixed(read_ptr, read_info_ptr, &gamma)) { png_set_gAMA_fixed(write_ptr, write_info_ptr, gamma); } }#endif#else /* Use floating point versions */#if defined(PNG_FLOATING_POINT_SUPPORTED)#if defined(PNG_cHRM_SUPPORTED) { double white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y; if (png_get_cHRM(read_ptr, read_info_ptr, &white_x, &white_y, &red_x, &red_y, &green_x, &green_y, &blue_x, &blue_y)) { png_set_cHRM(write_ptr, write_info_ptr, white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y); } }#endif#if defined(PNG_gAMA_SUPPORTED) { double gamma; if (png_get_gAMA(read_ptr, read_info_ptr, &gamma)) { png_set_gAMA(write_ptr, write_info_ptr, gamma); } }#endif#endif /* floating point */#endif /* fixed point */#if defined(PNG_iCCP_SUPPORTED) { png_charp name; png_charp profile; png_uint_32 proflen; int compression_type; if (png_get_iCCP(read_ptr, read_info_ptr, &name, &compression_type, &profile, &proflen)) { png_set_iCCP(write_ptr, write_info_ptr, name, compression_type, profile, proflen); } }#endif#if defined(PNG_sRGB_SUPPORTED) { int intent; if (png_get_sRGB(read_ptr, read_info_ptr, &intent)) { png_set_sRGB(write_ptr, write_info_ptr, intent); } }#endif { png_colorp palette; int num_palette; if (png_get_PLTE(read_ptr, read_info_ptr, &palette, &num_palette)) { png_set_PLTE(write_ptr, write_info_ptr, palette, num_palette); } }#if defined(PNG_bKGD_SUPPORTED) { png_color_16p background; if (png_get_bKGD(read_ptr, read_info_ptr, &background)) { png_set_bKGD(write_ptr, write_info_ptr, background); } }#endif#if defined(PNG_hIST_SUPPORTED) { png_uint_16p hist; if (png_get_hIST(read_ptr, read_info_ptr, &hist)) { png_set_hIST(write_ptr, write_info_ptr, hist); } }#endif#if defined(PNG_oFFs_SUPPORTED) { png_int_32 offset_x, offset_y; int unit_type; if (png_get_oFFs(read_ptr, read_info_ptr,&offset_x,&offset_y,&unit_type)) { png_set_oFFs(write_ptr, write_info_ptr, offset_x, offset_y, unit_type); } }#endif#if defined(PNG_pCAL_SUPPORTED) { png_charp purpose, units; png_charpp params; png_int_32 X0, X1; int type, nparams; if (png_get_pCAL(read_ptr, read_info_ptr, &purpose, &X0, &X1, &type, &nparams, &units, ¶ms)) { png_set_pCAL(write_ptr, write_info_ptr, purpose, X0, X1, type, nparams, units, params); } }#endif#if defined(PNG_pHYs_SUPPORTED) { png_uint_32 res_x, res_y; int unit_type; if (png_get_pHYs(read_ptr, read_info_ptr, &res_x, &res_y, &unit_type)) { png_set_pHYs(write_ptr, write_info_ptr, res_x, res_y, unit_type); } }#endif#if defined(PNG_sBIT_SUPPORTED) { png_color_8p sig_bit; if (png_get_sBIT(read_ptr, read_info_ptr, &sig_bit)) { png_set_sBIT(write_ptr, write_info_ptr, sig_bit); } }#endif#if defined(PNG_sCAL_SUPPORTED)#ifdef PNG_FLOATING_POINT_SUPPORTED { int unit; double scal_width, scal_height; if (png_get_sCAL(read_ptr, read_info_ptr, &unit, &scal_width, &scal_height)) { png_set_sCAL(write_ptr, write_info_ptr, unit, scal_width, scal_height); } }#else#ifdef PNG_FIXED_POINT_SUPPORTED { int unit; png_charp scal_width, scal_height; if (png_get_sCAL_s(read_ptr, read_info_ptr, &unit, &scal_width, &scal_height)) { png_set_sCAL_s(write_ptr, write_info_ptr, unit, scal_width, scal_height); } }#endif#endif#endif#if defined(PNG_TEXT_SUPPORTED) { png_textp text_ptr; int num_text; if (png_get_text(read_ptr, read_info_ptr, &text_ptr, &num_text) > 0) { png_debug1(0, "Handling %d iTXt/tEXt/zTXt chunks\n", num_text); png_set_text(write_ptr, write_info_ptr, text_ptr, num_text); } }#endif#if defined(PNG_tIME_SUPPORTED) { png_timep mod_time; if (png_get_tIME(read_ptr, read_info_ptr, &mod_time)) { png_set_tIME(write_ptr, write_info_ptr, mod_time);#if defined(PNG_TIME_RFC1123_SUPPORTED) /* we have to use png_strcpy instead of "=" because the string pointed to by png_convert_to_rfc1123() gets free'ed before we use it */ png_strcpy(tIME_string,png_convert_to_rfc1123(read_ptr, mod_time)); tIME_chunk_present++;#endif /* PNG_TIME_RFC1123_SUPPORTED */ } }#endif#if defined(PNG_tRNS_SUPPORTED) { png_bytep trans; int num_trans; png_color_16p trans_values; if (png_get_tRNS(read_ptr, read_info_ptr, &trans, &num_trans, &trans_values)) { png_set_tRNS(write_ptr, write_info_ptr, trans, num_trans, trans_values); } }#endif#if defined(PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED) { png_unknown_chunkp unknowns; int num_unknowns = (int)png_get_unknown_chunks(read_ptr, read_info_ptr, &unknowns); if (num_unknowns) { png_size_t i; png_set_unknown_chunks(write_ptr, write_info_ptr, unknowns, num_unknowns); /* copy the locations from the read_info_ptr. The automatically generated locations in write_info_ptr are wrong because we haven't written anything yet */ for (i = 0; i < (png_size_t)num_unknowns; i++) png_set_unknown_chunk_location(write_ptr, write_info_ptr, i, unknowns[i].location); } }#endif#ifdef PNG_WRITE_SUPPORTED png_debug(0, "\nWriting info struct\n");/* If we wanted, we could write info in two steps: png_write_info_before_PLTE(write_ptr, write_info_ptr); */ png_write_info(write_ptr, write_info_ptr);#endif#ifdef SINGLE_ROWBUF_ALLOC png_debug(0, "\nAllocating row buffer..."); row_buf = (png_bytep)png_malloc(read_ptr, png_get_rowbytes(read_ptr, read_info_ptr)); png_debug1(0, "0x%08lx\n\n", (unsigned long)row_buf);#endif /* SINGLE_ROWBUF_ALLOC */ png_debug(0, "Writing row data\n");#if defined(PNG_READ_INTERLACING_SUPPORTED) || \ defined(PNG_WRITE_INTERLACING_SUPPORTED) num_pass = png_set_interlace_handling(read_ptr);# ifdef PNG_WRITE_SUPPORTED png_set_interlace_handling(write_ptr);# endif#else num_pass=1;#endif#ifdef PNGTEST_TIMING t_stop = (float)clock(); t_misc += (t_stop - t_start); t_start = t_stop;#endif for (pass = 0; pass < num_pass; pass++) { png_debug1(0, "Writing row data for pass %d\n",pass); for (y = 0; y < height; y++) {#ifndef SINGLE_ROWBUF_ALLOC png_debug2(0, "\nAllocating row buffer (pass %d, y = %ld)...", pass,y); row_buf = (png_bytep)png_malloc(read_ptr, png_get_rowbytes(read_ptr, read_info_ptr)); png_debug2(0, "0x%08lx (%ld bytes)\n", (unsigned long)row_buf, png_get_rowbytes(read_ptr, read_info_ptr));#endif /* !SINGLE_ROWBUF_ALLOC */ png_read_rows(read_ptr, (png_bytepp)&row_buf, png_bytepp_NULL, 1);#ifdef PNG_WRITE_SUPPORTED#ifdef PNGTEST_TIMING t_stop = (float)clock(); t_decode += (t_stop - t_start); t_start = t_stop;#endif png_write_rows(write_ptr, (png_bytepp)&row_buf, 1);#ifdef PNGTEST_TIMING t_stop = (float)clock(); t_encode += (t_stop - t_start); t_start = t_stop;#endif#endif /* PNG_WRITE_SUPPORTED */#ifndef SINGLE_ROWBUF_ALLOC png_debug2(0, "Freeing row buffer (pass %d, y = %ld)\n\n", pass, y); png_free(read_ptr, row_buf);#endif /* !SINGLE_ROWBUF_ALLOC */ } }#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) png_free_data(read_ptr, read_info_ptr, PNG_FREE_UNKN, -1);#endif#if defined(PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED) png_free_data(write_ptr, write_info_ptr, PNG_FREE_UNKN, -1);#endif png_debug(0, "Reading and writing end_info data\n"); png_read_end(read_ptr, end_info_ptr);#if defined(PNG_TEXT_SUPPORTED) { png_textp text_ptr; int num_text; if (png_get_text(read_ptr, end_info_ptr, &text_ptr, &num_text) > 0) { png_debug1(0, "Handling %d iTXt/tEXt/zTXt chunks\n", num_text); png_set_text(write_ptr, write_end_info_ptr, text_ptr, num_text); } }#endif#if defined(PNG_tIME_SUPPORTED) { png_timep mod_time; if (png_get_tIME(read_ptr, end_info_ptr, &mod_time)) { png_set_tIME(write_ptr, write_end_info_ptr, mod_time);#if defined(PNG_TIME_RFC1123_SUPPORTED) /* we have to use png_strcpy instead of "=" because the string pointed to by png_convert_to_rfc1123() gets free'ed before we use it */ png_strcpy(tIME_string,png_convert_to_rfc1123(read_ptr, mod_time)); tIME_chunk_present++;#endif /* PNG_TIME_RFC1123_SUPPORTED */ } }#endif#if defined(PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED) { png_unknown_chunkp unknowns; int num_unknowns; num_unknowns = (int)png_get_unknown_chunks(read_ptr, end_info_ptr, &unknowns);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -