Skip to content

packPNG 2.0 LTS

Choose a tag to compare

@YadeWira YadeWira released this 13 Jun 20:32
· 3 commits to master since this release

First long-term-support release. Lossless, byte-exact recompressor for the
PNG family — PNG / APNG / JNG / MNG. The default backend undoes the deflate exactly
(preflate) and re-stores the image with WebP-lossless, reconstructing the
byte-identical original file (same SHA-256).

Frozen format

From 2.0 onward the wire format is frozen — every 2.0x point release decodes
any other 2.0x's output. Magics: TCIP (default, preflate + WebP-lossless),
TVCP (-fast, kanzi+zstd), TMCP (-preflate-max, kanzi-TPAQX),
TPCL (-tpcl, preflate + LZMA2), TCIJ (JNG), TCIM (MNG).

Highlights since v1.9

  • TPCL (-tpcl): preflate + multi-threaded LZMA2 — precomp's recipe, but beats
    precomp on ratio and batch speed (newer preflate).
  • MNG Level B: parallel per-segment recompression (large MNGs ~4× faster encode).
  • libpackPNG: static library + C API (packpng.h) — make lib / make lib-win.
  • Suite-wide never-expands guarantee; clean help screen + -h/--help.

vs precomp (17 real PNGs, byte-exact both sides)

ratio encode decode
packPNG TCIP (default) 45.7 % 2.4 s 0.7 s
packPNG TPCL (-tpcl) 64.3 % 1.7 s 0.6 s
precomp 0.4.8 75.3 % 2.2 s 1.0 s

packPNG's default is ~39 % smaller than precomp — it models the image
(WebP-lossless) instead of LZMA2-ing the deflate stream. Full tables, backends and
the library API are in the wiki.

Downloads

  • Linux x86-64 (static, dependency-free): packPNG-linux-x86_64-static-v2.0
  • Windows x86-64 (mingw, OS DLLs only): packPNG-windows-x86_64-full-v2.0.exe
4d87c73f6fbef93b14a97cae511cc222d229d72f4b43d2b9403120f666b5be90  packPNG-linux-x86_64-static-v2.0
a486239e76c1d01581739ff1289fe87f93289afca29c740bf60a9cc21cee19b4  packPNG-windows-x86_64-full-v2.0.exe

The Windows .exe is unsigned; some AVs may flag a generic heuristic (false
positive). Verify the SHA-256 or build from source.### Library (libpackPNG) — SDK archives

Static library + C API for embedding the codec, shipped as per-platform SDK
bundles (library + packpng.h + README with the link line). make lib /
make lib-win reproduce them. Static only for now (a shared .so/.dll needs PIC
rebuilds of the vendored deps). API + example: wiki → Library.

  • packPNG-2.0-linux-x64-lib.tar.gz — Linux x86-64 (AVX2), libpackpng.a + header
  • packPNG-2.0-win64-lib.zip — Windows x86-64 (mingw-w64), libpackpng-win.a + header
72d2cf54b810c71238d00d9fbd805a4bbbc8efe0f32ec6f11efdbe4737682a36  packPNG-2.0-linux-x64-lib.tar.gz
55d02cb1f0040d24e09b136ec8d609b2e05a578e26b82e2002fc61e8b1c8c71e  packPNG-2.0-win64-lib.zip