小编And*_*ang的帖子

在 C 中使用 libpng 读写 PNG 文件

我的目标是读取 PNG 文件,更改像素值并使用libpng存储更新的 PNG 文件。

我按照官方 libpng 手册read_png编写了两个名为和的函数。示例代码不会更改像素值,因为它是最小的、可重现的示例。它也不检查输入文件是否实际上是 PNG 文件。write_png

#include <png.h>

png_infop info_ptr;
png_bytepp row_pointers;

void read_png(char *file_name)
{
    FILE *fp = fopen(file_name, "rb");
    png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
    png_infop info_ptr = png_create_info_struct(png_ptr);
    png_init_io(png_ptr, fp);
    png_read_png(png_ptr, info_ptr, PNG_TRANSFORM_IDENTITY, NULL);
    row_pointers = png_get_rows(png_ptr, info_ptr);
    png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
    fclose(fp);
}

void write_png(char *file_name)
{
    FILE *fp = fopen(file_name, "wb");
    png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
    png_init_io(png_ptr, fp);
    png_set_rows(png_ptr, info_ptr, row_pointers); …
Run Code Online (Sandbox Code Playgroud)

c png libpng

8
推荐指数
1
解决办法
7969
查看次数

标签 统计

c ×1

libpng ×1

png ×1