普贤教程 › 包参考
png 包
纯语言 PNG 编码器(stored 无压缩,M61-S2,第 6 个 stdlib)
png_encode(w, h, pixels) -> bytes 完整 PNG 文件(8bit RGB truecolor,逐行 filter=0)
| 项 | 值 |
|---|---|
| 包名 | png |
| 版本 | 0.1.0 |
| 入口 | png.px |
| 分类 | 图形与媒体 |
| 文件数 / 行数 | 1 / 100 |
安装与引入
bash
pxpkg init # 首次 pxpkg add png@0.1.0 pxpkg install
px
import png所属分类教程:图形与媒体
公开接口
| 函数 | 参数 |
|---|---|
png_encode | w, h, pixels |
其余 5 个 def(内部与辅助,可直接调用但不属稳定接口)
| 函数 | 参数 |
|---|---|
_crc32_table | |
_crc32 | t, d |
_adler32 | d |
_zlib_stored | d |
_chunk | tbl, type_s, data |
包内说明(源码头注释)
text
============================================================ 普贤标准库:std.png —— 纯语言 PNG 编码器(stored 无压缩,M61-S2,第 6 个 stdlib) 用法:import std.png png_encode(w, h, pixels) -> bytes 完整 PNG 文件(8bit RGB truecolor,逐行 filter=0) pixels = list[int](w*h),每像素 0xRRGGBB —— 与 std.gfx 画布像素布局一致 实现:签名 + IHDR/IDAT/IEND chunk + 纯语言 CRC-32(IEEE)+ zlib stored block (CMF=0x78 FLG=0x01 + BFINAL/BTYPE stored 块 ≤65535 + ADLER32) 零新 C、零 FFI(A 线 zlib FFI 通后可选联动:IDAT 换 zlib_compress 真压缩,见 M61-PLAN §4) 依赖 builtin:bytes/bytes_len/bytes_get/bytes_concat/bytes_slice/int_to_bytes/hex_to_bytes 说明:PNG chunk 内 CRC 覆盖 type+data;stored 流 0x78 0x01 是标准 no-compression zlib 头 ============================================================ ---- 内部:CRC-32 查表(IEEE poly 0xEDB88320)----