All Versions
37
Latest Version
Avg Release Cycle
32 days
Latest Release
-
Changelog History
Page 2
Changelog History
Page 2
-
v0.23.9 Changes
- Introduced correctly capitalized aliases for some scream case types
- Introduced
imageops::{vertical_gradient, horizontal_gradient}
for writing simple color gradients into an image. - Sped up methods iterating over
Pixels
,PixelsMut
, etc. by using exact chunks internally. This should auto-vectorizeImageBuffer::from_pixel
. - ๐ฏ Adjusted
Clone
impls of iterators to not require a bound on the pixel. - โ Add
Debug
impls for iterators where the pixel's channel implements it. - โ Add comparison impls for
FilterType
-
v0.23.8 Changes
flat::Error
now implements the standardError
trait- The type parameter of
Map
has been relaxed to?Sized
- โ Added the
imageops::tile
function that repeats one image across another
-
v0.23.7 Changes
- ๐ฏ Iterators over immutable pixels of
ImageBuffer
can now be cloned - โ Added a
tga
encoder - โ Added
ColorMap::lookup
, an optional reversal of the map - The
EncodableLayout
trait is now exported
- ๐ฏ Iterators over immutable pixels of
-
v0.23.6 Changes
June 20, 2020- โ Added
png::ApngDecoder
, an adapter decoding the animation in an APNG. - ๐ Fixed a bug in
jpeg
encoding that would darken output colors. - โ Added a utility constructor
FlatSamples::with_monocolor
. - Added
ImageBuffer::as_flat_samples_mut
which is a mutable variant of the existing ffi-helperImageBuffer::as_flat_samples
.
- โ Added
-
v0.23.5 Changes
June 10, 2020- ๐ง The
png
encoder now allows configuring compression and filter type. The output is not part of stability guarantees, see its documentation. - The
jpeg
encoder now accepts any implementor ofGenericImageView
. This allows images that are only partially present in memory to be encoded. ImageBuffer
now derivesHash
,PartialEq
,Eq
.- The
Pixels
/PixelsMut
iterator no longer yields out-of-bounds pixels when the underlying buffer is larger than required. - The
pbm
decoder correctly decodes ascii data again, fixing a regression where it would use the sample value1
as white instead of255
. - ๐ Fix encoding of RGBA data in
gif
frames. - Constructing a
Rows
/RowsMut
iterator no longer panics when the image has a width or height of0
.
- ๐ง The
-
v0.23.4 Changes
April 19, 2020- ๐ Improved the performance of decoding animated gifs
- โ Added
crop_imm
which functions likecrop
but on a shared reference - ๐ป The gif
DisposalMethod::Any
is treated asKeep
, consistent with browsers - Most errors no longer allocate a string, instead implement Display.
- โ Add some implementations of
Error::source
-
v0.23.3 Changes
April 05, 2020- โ Added
ColorType::has_alpha
to facilitate lossless conversion - Recognize extended WebP formats for decoding
- โ Added decoding and encoding for the
farbfeld
format - Export named iterator types created from various
ImageBuffer
methods - ๐ Error in jpeg encoder for images larger than 65536 pixels, fixes panic
- โ Added
-
v0.23.2 Changes
March 17, 2020- The dependency on
jpeg-decoder
now reflects minimum requirements.
- The dependency on
-
v0.23.1 Changes
March 09, 2020- Fix cmyk_to_rgb (jpeg) causing off by one rounding errors.
- ๐ A number of performance improvements for jpeg (encode and decode), bmp, vp8
- โ Added more details to errors for many formats
-
v0.23.0 Changes
February 07, 2020๐ This major release intends to improve the interface with regards to handling of color format data and errors for both decoding and encoding. This necessitated many breaking changes anyways so it was used to improve the compliance to the interface guidelines such as outstanding renaming.
It is not yet perfect with regards to color spaces but it was designed mainly as an improvement over the current interface with regards to in-memory color formats, first. We'll get to color spaces in a later major version.
- Heavily reworked
ColorType
:- This type is now used for denoting formats for which we support operations
on buffers in these memory representations. Particularly, all channels in
pixel types are assumed to be an integer number of bytes (In terms of the
Rust type system, these are
Sized
and one can crate slices of channel values). - An
ExtendedColorType
is used to express more generic color formats for which the library has limited support but can be converted/scaled/mapped into aColorType
buffer. This operation might be fallible but, for example, includes sources with 1/2/4-bit components. - Both types are non-exhaustive to add more formats in a minor release.
- A work-in-progress (#1085) will further separate the color model from the
specific channel instantiation, e.g. both
8-bit RGB
and16-bit BGR
are instantiations ofRGB
color model.
- This type is now used for denoting formats for which we support operations
on buffers in these memory representations. Particularly, all channels in
pixel types are assumed to be an integer number of bytes (In terms of the
Rust type system, these are
- Heavily rework
ImageError
:- The top-level enum type now serves to differentiate cause with multiple
opaque representations for the actual error. These are no longer simple
Strings but contains useful types. Third-party decoders that have no
variant in
ImageFormat
have also been considered. - Support for
Error::source
that can be downcast to an error from a matching version of the underlying decoders. Note that the version is not part of the stable interface guarantees, this should not be relied upon for correctness and only be used as an optimization. - Added image format indications to errors.
- The error values produced by decoder will be upgraded incrementally. See something that still produces plain old String messages? Feel free to send a PR.
- The top-level enum type now serves to differentiate cause with multiple
opaque representations for the actual error. These are no longer simple
Strings but contains useful types. Third-party decoders that have no
variant in
- Reworked the
ImageDecoder
trait:read_image
takes an output buffer argument instead of allocating all memory on its own.- The return type of
dimensions
now aligns withGenericImage
sizes. - The
colortype
method was renamed tocolor_type
for conformity.
- The enums
ColorType
,DynamicImage
,imageops::FilterType
,ImageFormat
no longer re-export all of their variants in the top-level of the crate. This removes the growing pollution in the documentation and usage. You can still insert the equivalent statement on your own:use image::ImageFormat::{self, *};
- The result of
encode
operations is now uniformly anImageResult<()>
. - โ Removed public converters from some
tiff
,png
,gif
,jpeg
types, mainly such as error conversion. This allows upgrading the dependency across major versions without a major release inimage
itself. - On that note, the public interface of
gif
encoder no longer takes agif::Frame
but rather deals withimage::Frame
only. If you require to specify the disposal method, transparency, etc. then you may want to wait with upgrading but (see next change). - ๐ The
gif
encoder now errors on invalid dimensions or unsupported color formats. It would previously silently reinterpret bytes as RGB/RGBA. - The capitalization of
ImageFormat
and other enum variants has been adjusted to adhere to the API guidelines. These variants are now spelledGif
,Png
, etc. The same change has been made to the name of types such asHDRDecoder
. - The
Progress
type has finally received public accessor method. Strange that no one reported them missing. - Introduced
PixelDensity
andPixelDensityUnit
to store DPI information in formats that support encoding this form of meta data (e.g. injpeg
).
- Heavily reworked