将RGB及RGBA图片保存为压缩PNG – svpng

svpng v0.1.1

一个简约的C函数,用于将RGB/RGBA图片保存为压缩PNG。

特性

  • RGB 或者 RGBA颜色模式
  • 单功能
  • 32行ANSI C代码
  • 无依赖
  • 自定义输出流

示例

void test_rgb(void) {
    unsigned char rgb[256 * 256 * 3], *p = rgb;
    unsigned x, y;
    FILE *fp = fopen("rgb.png", "wb");
    for (y = 0; y < 256; y++)
        for (x = 0; x < 256; x++) {
            *p++ = (unsigned char)x;    /* R */
            *p++ = (unsigned char)y;    /* G */
            *p++ = 128;                 /* B */
        }
    svpng(fp, 256, 256, rgb, 0);
    fclose(fp);
}

void test_rgba(void) {
    unsigned char rgba[256 * 256 * 4], *p = rgba;
    unsigned x, y;
    FILE* fp = fopen("rgba.png", "wb");
    for (y = 0; y < 256; y++)
        for (x = 0; x < 256; x++) {
            *p++ = (unsigned char)x;                /* R */
            *p++ = (unsigned char)y;                /* G */
            *p++ = 128;                             /* B */
            *p++ = (unsigned char)((x + y) / 2);    /* A */
        }
    svpng(fp, 256, 256, rgba, 1);
    fclose(fp);
}

int main(void) {
    test_rgb();
    test_rgba();
    return 0;
}

编译

gcc example.c && ./a.out

输出

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:将RGB及RGBA图片保存为压缩PNG – svpng