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
andeXIf
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