Releases: randy408/libspng
v0.6.1
Bugfixes
- Fixed return value in
example.c
for valid images - Fixed MSVC build with miniz (Matthew Albrecht)
- Fixed argument types for
spng__zalloc()
- Fixed some signedness warnings
Changes
Changes to the default behavior were made for libpng compatibility:
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
v0.6.0-rc1
This is a release candidate, the API may change for the stable release!
Share your feedback on the API here or on Gitter!
UPDATE: This release is broken, use a0b7323 for testing progressive decode functionality with SPNG_FMT_PNG
.
New features:
- 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 scanline/row info including the filter type
- New output format
SPNG_FMT_RGB8
, conversion is supported from any color type and bit depth - New output format
SPNG_FMT_PNG
, this always matches the PNG's format in host-endian - Added support for decoding from a
FILE*
viaspng_set_png_file()
- Added
SPNG_CTX_IGNORE_ADLER32
context flag to ignore checksums in DEFLATE streams - Enums for filter types, interlace method
- New Meson option
benchmarks
to run benchmarks provided by spngt, this requires Git LFS. - New Meson option to link the static version of zlib:
static_zlib
- Multiversioned
defilter_up()
function (enabled for GCC + glibc)
Documentation:
- Added notes on build optimization level
- Added section on decoding arbitrary files
Bugfixes:
- Fixed an IDAT streaming bug (Mathieu Mallet)
- Fixed CMake install issues
- Fixed bKGD handling and a testsuite issue on big-endian (Robert-André Mauchin)
- 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