All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Increased error diffusion dithering speed by ~50%
- Reduced error diffusion dithering memory usage by ~70% (#13)
- Docs: the input does still need to be converted to grayscale for grayscale palettes, actually (#7)
- When comparing colors, each channel is weighted according to human luminance perception (didder#14)
- Corrected Burkes matrix (#10)
- Palette order no longer affects output (#9)
Grayscale palettes don't require the input image be converted to grayscale beforehand (#7)(incorrect, see #7)
- Support for images with transparency (#8)
- Update Bayer strength recommendations for color images
- JSON tags for
OrdereredDitherMatrix
Dither
never returnsnil
, making code simpler
- Bug where paletted images would never be detected as needing to be copied in
Dither
- Palette is actually fully copied when needed, before the colors were shared with passed slice
NewDitherer
Ditherer.GetColorPalette
DitherPaletted
andDitherPalettedConfig
GetColorModel
- Added
ErrorDiffusionStrength
to set the strength of error diffusion dithering (#4) RoundClamp
function for making your ownPixelMappers
that round correctly
- All linear RGB values are represented using
uint16
instead ofuint8
now, because 8-bits is not enough to accurately hold a linearized value. This is a breaking change, hence the new major version.
- Rounding is no longer biased, because ties are rounded to the nearest even number
Initial release.