Skip to content

Tags

Tags give the ability to mark specific points in history as being important
  • v0.23.6
    Release 0.23.6
    
    - 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`.
    
    sha256sum:
    b5b0553fec6407d63fe2975b794dfb099f3f790bdc958823851af37b26404ab4  target/package/image-0.23.6.crate
    
  • v0.23.5
    Release 0.23.5
    
    - 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`.
    
    sha256sum:
    d534e95ad8b9d5aa614322d02352b4f1bf962254adcf02ac6f2def8be18498e8  target/package/image-0.23.5.crate
    
  • v0.23.4
    Release 0.23.4
    
    - 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`
    
    sha256sum:
    9117f4167a8f21fa2bb3f17a652a760acd7572645281c98e3b612a26242c96ee  target/package/image-0.23.4.crate
    
  • v0.23.3
    Release 0.23.3
    
    - 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
    
    sha256sum
    bfc5483f8d5afd3653b38a196c52294dcb239c3e1a5bade1990353ea13bcf387  target/package/image-0.23.3.crate
    
  • v0.23.2
    Release 0.23.2
    
    - The dependency on `jpeg-decoder` now reflects minimum requirements.
    
    sha256sum:
    9062b90712d25bc6bb165d110aa59c6b47c849246e341e7b86a98daff9d49f60  target/package//image-0.23.2.crate
    
  • v0.23.1
    Release 0.23.1
    
    - 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
    
    sha256sum:
    403f0c29211dc50a78eb53eeeae87945d44cb63071881834212f36677fccb2b4  target/package/image-0.23.1.crate
    
  • v0.23.0
    Release 0.23.0
    
    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`).
    
    sha256sum:
    ef4e336ec01a678e7ab692914c641181528e8656451e6252f8f9e33728882eaf  target/package/image-0.23.0.crate
    
  • v0.22.5
    Release 0.22.5
    
    - Added `GenericImage::copy_within`, specialized for `ImageBuffer`
    - Fixed decoding of interlaced `gif` files
    - Prepare for future compatibility of array `IntoIterator` in example code
    
    sha256sum:
    08ed2ada878397b045454ac7cfb011d73132c59f31a955d230bd1f1c2e68eb4a  target/package/image-0.22.5.crate
    
  • v0.22.4
    Release 0.22.4
    
    - Added in-place variants for flip and rotate operations.
    - The bmp encoder now checks if dimensions are valid for the format. It would
      previously write a subset or panic.
    - Removed deprecated implementations of `Error::description`
    - Added `DynamicImage::into_*` which convert without an additional allocation.
    - The PNG encoder errors on unsupported color types where it had previously
      silently swapped color channels.
    - Enabled saving images as `gif` with `save_buffer`.
    
    sha256sum:
    53cb19c4e35102e5c6fb9ade5e0e236c5588424dc171a849af3141bf0b47768a target/package/image-0.22.4.crate
    
  • v0.23.0-preview.0
    Release 0.23.0-preview.0
    
  • v0.22.3
    Release 0.22.3
    
    - Added a new module `io` containing a configurable `Reader`. It can replace
      the bunch of free functions: `image::{load_*, open, image_dimensions}` while
      enabling new combinations such as `open` but with format deduced from content
      instead of file path.
    - Fixed `const_err` lint in the macro expanded implementations of `Pixel`. This
      can only affect your crate if `image` is used as a path dependency.
    
  • v0.22.2
    Release 0.22.2
    
    - Undeprecate `unsafe` trait accessors. Further evaluation showed that their
      deprecation should be delayed until trait `impl` specialization is available.
    - Fixed magic bytes used to detect `tiff` images.
    - Added `DynamicImage::from_decoder`.
    - Fixed a bug in the `PNGReader` that caused an infinite loop.
    - Added `ColorType::{bits_per_pixel, num_components}`.
    - Added `ImageFormat::from_path`, same format deduction as the `open` method.
    - Fixed a panic in the gif decoder.
    - Aligned background color handling of `gif` to web browser implementations.
    - Fixed handling of partial frames in animated `gif`.
    - Removed unused direct `lzw` dependency, an indirect dependency in `tiff`.
    
  • v0.21.3
    Release v0.21.3
    
    Fixes a safety issue in the hdr decoder.
    
  • v0.22.1
    Release 0.22.1
    
    - Fixes compilation without any enabled features
    
  • v0.22.0
    Release v0.22.0
    
    - The required Rust version is now `1.34.2`.
    - Note the website and blog: [image-rs.org][1] and [blog.image-rs.org][2]
    - `PixelMut` now only on `ImageBuffer` and removed from `GenericImage`
      interface. Prefer iterating manually in the generic case.
    - Replaced an unsafe interface in the hdr decoder with a safe variant.
    - Support loading 2-bit BMP images
    - Add method to save an `ImageBuffer`/`DynamicImage` with specified format
    - Update tiff to `0.3` with a writer
    - Update png to `0.15`, fixes reading of interlaced sub-byte pixels
    - Always use custom struct for `ImageDecoder::Reader`
    - Added `apply_without_alpha` and `map_without_alpha` to `Pixel` trait
    - Pixel information now with associated constants instead of static methods
    - Changed color structs to tuple types with single component. Improves
      ergonomics of destructuring assignment and construction.
    - Add lifetime parameter on `ImageDecoder` trait.
    - Remove unecessary `'static` bounds on affine operations
    - Add function to retrieve image dimensions without loading full image
    - Allow different image types in overlay and replace
    - Iterators over rows of `ImageBuffer`, mutable variants
    
    [1]: https://www.image-rs.org
    [2]: https://blog.image-rs.org
    
  • v0.21.2
    Release v0.21.2
    
    - Fixed a variety of crashes and opaque errors in webp
    - Updated the png limits to be less restrictive
    - Reworked even more `unsafe` operations into safe alternatives
    - Derived Debug on FilterType and Deref on Pixel
    - Removed a restriction on DXT to always require power of two dimensions
    - Change the encoding of RGBA in bmp using bitfields
    - Corrected various urls
    
  • v0.21.1
    Release v0.21.1
    
    - A fairly important bugfix backport
    - Fixed a potentially memory safety issue in the hdr and tiff decoders, see #885
    - See [the full advisory](docs/2019-04-23-memory-unsafety.md) for an analysis
    - Fixes `ImageBuffer` index calculation for very, very large images
    - Fix some crashes while parsing specific incomplete pnm images
    - Added comprehensive fuzzing for the pam image types
    
  • v0.1