libpng错误:读取错误 [英] libpng error: Read Error

查看:506
本文介绍了libpng错误:读取错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些png图片.我打开比我将其保存到文件.当我尝试打开保存的图像时,我遇到了问题. libpng错误:png_read_rows

I has some png image. I open it. Than i save it to file. And when i try to open saved image i have the problem. libpng error: Read Error on png_read_rows

这是写作代码:

png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
png_infop info_ptr = png_create_info_struct(png_ptr);
//created png struct

setjmp(png_jmpbuf(png_ptr))
//signed
png_init_io(png_ptr, file);

png_set_IHDR(png_ptr, info_ptr, width, height, 8, PNG_COLOR_TYPE_RGBA, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
//set header
unsigned char * buffer = (unsigned char*)malloc(4 *width * height);
// created buffer
unsigned char ** row_pointers = (unsigned char**) malloc(height * sizeof(unsigned char *)); // created rows pointers
for (int i= 0; i< height ; i++) {
    row_pointers[i] = buffer + i * 4 * width;
}

memset(buffer, 255, 4 * height * width); // fill buffer with white image for example.
// **I mean that the same problem is even when i do not write the opened image, 
//but just fill it with white**.

png_write_image(png_ptr, row_pointers);
//write data

png_write_end(png_ptr, NULL);

png_destroy_write_struct(&png_ptr, (png_infopp)NULL);

推荐答案

如libpng/example.c中所示,将其放在png_set_IHDR()之后:

As illustrated in libpng/example.c, put this after png_set_IHDR():

// Write the file header information.  REQUIRED

png_write_info(png_ptr, info_ptr);

这篇关于libpng错误:读取错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆