【问题标题】:libpng error: Read Errorlibpng 错误:读取错误
【发布时间】:2012-11-11 21:47:02
【问题描述】:

我有一些 png 图片。我打开它。比我保存到文件。当我尝试打开保存的图像时,我遇到了问题。 libpng 错误:读取错误 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);

【问题讨论】:

  • 您是否尝试过使用其他阅读器/查看器打开您的 generaetd png 文件?这应该可以帮助您缩小问题原因
  • 我还看到那里的文件已损坏

标签: c++ objective-c ios png libpng


【解决方案1】:

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

// Write the file header information.  REQUIRED

png_write_info(png_ptr, info_ptr);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-22
    • 2021-03-03
    • 1970-01-01
    • 2015-04-18
    • 2020-04-25
    • 1970-01-01
    • 2011-10-24
    • 2020-07-15
    相关资源
    最近更新 更多