All Versions
37
Latest Version
Avg Release Cycle
32 days
Latest Release
-

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-vectorize ImageBuffer::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 standard Error 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
  • 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-helper ImageBuffer::as_flat_samples.
  • 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 of GenericImageView. This allows images that are only partially present in memory to be encoded.
    • ImageBuffer now derives Hash, 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 value 1 as white instead of 255.
    • ๐Ÿ›  Fix encoding of RGBA data in gif frames.
    • Constructing a Rows/RowsMut iterator no longer panics when the image has a width or height of 0.
  • v0.23.4 Changes

    April 19, 2020
    • ๐Ÿ‘Œ Improved the performance of decoding animated gifs
    • โž• Added crop_imm which functions like crop but on a shared reference
    • ๐Ÿ’ป The gif DisposalMethod::Any is treated as Keep, 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
  • v0.23.2 Changes

    March 17, 2020
    • The dependency on jpeg-decoder now reflects minimum requirements.
  • 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 a ColorType 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 and 16-bit BGR are instantiations of RGB color model.
    • 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.
    • 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 with GenericImage sizes.
      • The colortype method was renamed to color_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 an ImageResult<()>.
    • โœ‚ 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 in image itself.
    • On that note, the public interface of gif encoder no longer takes a gif::Frame but rather deals with image::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 spelled Gif, Png, etc. The same change has been made to the name of types such as HDRDecoder.
    • The Progress type has finally received public accessor method. Strange that no one reported them missing.
    • Introduced PixelDensity and PixelDensityUnit to store DPI information in formats that support encoding this form of meta data (e.g. in jpeg).