v0.6.0
This release is backward compatible.
New
-
Progressive image decode support, added new functions:
spng_decode_scanline()
- Decodes a single scanlinespng_decode_row()
- Decodes and deinterlaces a scanlinespng_get_row_info()
- Get current scanline, row information
-
Added support for reading tEXt, iTXt, zTXt and iCCP color profile chunks, all standard chunks are supported in this release.
-
Added support for building with miniz,
spng.c/h
andminiz.c/h
can be used together without additional dependencies -
Added output format
SPNG_FMT_PNG
, it represents the PNG's format in host-endian (thanks to Matthew Stadelman for initial implementation) -
Added output format
SPNG_FMT_RAW
, it represents the PNG's format in big-endian (Matthew Stadelman) -
Added output format
SPNG_FMT_RGB8
, conversion is supported from any color type and bit depth -
Added grayscale output formats
SPNG_FMT_G8
,SPNG_FMT_GA8
andSPNG_FMT_GA16
, in this release conversion is only supported from a subset of grayscale and bit depth combinations, see documentation for details -
Added support for decoding from a
FILE*
withspng_set_png_file()
-
Added
SPNG_CTX_IGNORE_ADLER32
context flag to ignore checksums in DEFLATE streams -
Added enums for filter types and interlace method
-
Added Meson option
use_miniz
and compiler optionSPNG_USE_MINIZ
for building with miniz -
Added Meson option
benchmarks
to run benchmarks provided by spngt, this requires Git LFS. -
Added Meson option
static_zlib
to link the static version of zlib -
Multiversioned
defilter_up()
function (enabled for GCC + glibc)
Changes
-
spng_decode_image()
takes avoid*
for the output buffer (wasunsigned char*
) -
Reaching chunk size- or cache limits is now handled as an out-of-memory error
-
Out-of-range palette indices are handled as black opaque pixels when decoding,
this matches libpng's default behavior -
PNG image row length and output row length is now limited to 2^32-1 (
UINT32_MAX
)
Bugfixes
- Fixed an IDAT streaming bug (Mathieu Mallet)
- Fixed CMake install issues
- Fixed bKGD handling and a testsuite issue on big-endian
- Fixed setting of PLTE presence bit (Matthew Stadelman)
- Added missing error condition for indexed images without a palette
- Fixed zlib constness warnings
- Fixed ordering checks for tRNS, hIST and bKGD chunks
Known issues
- Decoding to
SPNG_FMT_G8
,SPNG_FMT_GA8
andSPNG_FMT_GA16
output formats is not supported for all PNG color type and bit depth combinations, see documentation for details - Gamma correction is not implemented for
SPNG_FMT_PNG
,SPNG_FMT_G8
,SPNG_FMT_GA8
andSPNG_FMT_GA16
spng_crc_set_action()
is partially implemented,SPNG_CRC_DISCARD
has no effect