Skip to content

v0.7.0

Compare
Choose a tag to compare
@randy408 randy408 released this 28 Sep 19:05
· 73 commits to master since this release
v0.7.0

This release is funded by NLNet!

To support further development consider sponsoring the project on OpenCollective.

New

  • Encode support with interlacing for all bit depths and color types

  • Progressive image encoding API

  • Adaptive filtering, custom filter selection

  • Chunk write support for all standard chunks including oFFs and eXIf extensions

  • Added functions for configuring the encoder, decoder: spng_set_option(), spng_get_option()

  • Added options to configure zlib, chunk count limit and handling of unknown chunks

  • Added spng_get_gama_int(), spng_set_gama_int(), spng_decode_chunks()

  • Read and write support for unknown chunks

Decoder

  • Filter- and palette expansions optimizations using ARM NEON intrinsics, improved decode performance for common use cases:

  • ~30% faster with true color and 19% faster with indexed color images (details)

  • NEON optimizations are enabled by default on ARM64

Changes

  • Unknown chunks are now ignored by default, this can be configured with spng_set_option()

  • Introduced a default chunk count limit of 1000, this is independent of other limits

Changes - v0.7.0-rc3

  • Encoder no longer writes to an internal buffer by default, the SPNG_ENCODE_TO_BUFFER option must be set

Fixes

  • bKGD, tRNS chunk high bits are now preserved

  • Force cdecl calling convention for allocator callbacks on Windows (@danielkrupinski)

Improved

  • Expanded testsuite to verify chunk data, encoding of PNG's against libpng

  • Expanded documentation, added libpng migration guide