px普贤教程PuXian
普贤教程 › 包参考

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_encodew, h, pixels
其余 5 个 def(内部与辅助,可直接调用但不属稳定接口)
函数参数
_crc32_table
_crc32t, d
_adler32d
_zlib_storedd
_chunktbl, 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)----