Skip to content
This repository has been archived by the owner on Mar 17, 2023. It is now read-only.

Update Rust crate image to 0.24.5 #3

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Aug 14, 2022

Mend Renovate

This PR contains the following updates:

Package Type Update Change
image dev-dependencies minor 0.23.3 -> 0.24.5

Release Notes

image-rs/image

v0.24.5

Compare Source

Structural changes:

  • Increased the minimum supported Rust version (MSRV) to 1.61.
  • Increased the version requirement for the tiff crate to 0.8.0.
  • Increased the version requirement for the jpeg crate to 0.3.0.

Bug fixes:

  • The as_rgb32f function of DynamicImage is now correctly documented.
  • Fixed a crash when decoding ICO images. Added a regression test.
  • Fixed a panic when transforming webp images. Added a regression test.
  • Added a check to prevent integer overflow when calculating file size for BMP
    images. The missing check could panic in debug mode or else set an incorrect
    file size in release mode.
  • Upgraded the PNG image encoder to use the newer PngEncoder::write_image
    instead of the deprecated PngEncoder::encode which did not account for byte
    order and could result in images with incorrect colors.
  • Fixed InsufficientMemory error when trying to decode a PNG image.
  • Fix warnings and CI issues.
  • Typos and links in the documentation have been corrected.

Performance:

  • Added check for dynamic image dimensions before resizing. This improves
    performance in cases where the image does not need to be resized or has
    already been resized.

v0.24.4

Compare Source

New Features:

  • Encoding for webp is now available with the native library. This needs to
    be activate explicitly with the web-encoder feature.
  • exr decoding has gained basic limit support.

Bug fixes:

  • The Iterator::size_hint implementation of pixel iterators has been fixed to
    return the current length indicated by its ExactSizeIterator hint.
  • Typos and bad references in the documentation have been removed.

Performance:

  • ImageBuffer::get_pixel{,_mut} is now marked inline.
  • resize now short-circuits when image dimensions are unchanged.

v0.24.3

Compare Source

New Features:

  • TiffDecoder now supports setting resource limits.

Bug fixes:

  • Fix compile issues on little endian systems.
  • Various panics discovered by fuzzing.

v0.24.2

Structural changes:

  • CI now runs cargo-deny, checking dependent crates to an OSS license list
    and against RUSTSEC advisories.

New Features:

  • The WebP decoder recognizes and decodes images with VP8X header.
  • The DDS decoder recognizes and decodes images with DX10 headers.

Bug fixes:

  • Calling DynamicImage/ImageBuffer's methods write_to and save will now
    work properly even if the backing container is larger than the image layout
    requires. Only the relevant slice of pixel data is passed to the encoder.
  • Fixed a OOM-panic caused by malformed images in the gif decoder.

v0.24.1

Bug Fixes:

  • ImageBuffer::get_pixel_checked would sometimes return the incorrect pixel.
  • PNG encoding would sometimes not recognize unsupported color.

v0.24.0

Compare Source

Breaking changes

Structural changes:

  • Minimum Rust version is now 1.56 and may change in minor versions until
    further notice. It is now tracked in the library's Cargo.toml, instead, by
    the standard [package.rust-version] field. Note: this applies to the
    library itself
    . You may need different version resolutions for dependencies
    when using a non-stable version of Rust.
  • The math::utils::{nq, utils} modules have been removed. These are better
    served through the color_quant crate and the standard library respectively.
  • All codecs are now available through image::codecs, no longer top-level.
  • ExtendedColorType and DynamicImage have been made #[non_exhaustive],
    providing more methods instead of exhaustive matching.
  • Reading images through the generic io::Reader, as well as generic
    convenience interfaces, now requires the underlying reader to be BufRead + Seek. This allows more efficient support more formats. Similarly, writing
    now requires writers to be Write + Seek.
  • The Bgra* variants of buffers, which were only half-supported, have been
    removed. The owning buffer types ImageBuffer and DynamicImage
    fundamentally already make a choice in supported pixel representations. This
    allows for more consistent internal behavior. Callers are expected to convert
    formats when using those buffers, which they are required to do in any case
    already, and which is routinely performed by decoders.

Trait reworks:

  • The Pixel trait is no longer implemented quite as liberally for structs
    defined in the crate. Instead, it is now restricted to a set of known channel
    which ensures accuracy in computations involving those channels.
  • The ImageDecoderExt trait has been renamed to ImageDecoderRect, according
    to its actual functionality.
  • The Pixel trait and its Subpixel field no longer require (or provide) a
    'static lifetime bound.
  • The Pixel trait no longer requires specifying an associated, constant
    ColorType. This was of little relevance to computation but made it much
    harder to implement and extend correctly. Instead, the private
    PixelWithColorType extension is added for interfaces that require a
    properly known variant.
  • Reworked how SubImage interacts with the GenericImage trait. It is now a
    default implementation. Note that SubImage now has inherent methods that
    avoid double-indirection, the trait's method will no longer avoid this.
  • The Primitive trait now requires implementations to provide a minimum and
    maximum logical bound for the purpose of converting to other primitive
    representations.

Additions

Image formats:

  • Reading lossless WebP is now supported.
  • The OpenEXR format is now supported.
  • The jpeg decoder has been upgraded to Lossless JPEG.
  • The AvifEncoder now correctly handles alpha-less images. Some additional
    color formats are converted to RGBA as well.
  • The Bmp codec now decodes more valid images. It can decode a raw image
    without performing the palette mapping. It provides a method to access the
    palette. The encoder provides the inverse capabilities.
  • Tiff is now an output format.

Buffers and Operations:

  • The channel / primitive type f32 is now supported. Currently only the
    OpenEXR codec makes full use of it but this is expected to change.
  • ImageBuffer::{get_pixel_checked, get_pixel_mut_checked} provide panic-free
    access to pixels and channels by returning Option<&P> and Option<&mut P>.
  • ImageBuffer::write_to has been added, encoding the buffer to a writer. This
    method already existed on DynamicImage.
  • DynamicImage now implements From<_> for all supported buffer types.
  • DynamicImage now implements Default, an empty Rgba8 image.
  • imageops::overlay now takes coordinates as i64.

Limits:

  • Added Limits and LimitSupport, utilized in io::Reader. These can be
    configured for rudimentary protection against resource exhaustion (images
    pretending to require a very large buffer). These types are not yet
    exhaustive by design, and more and stricter limits may be added in the
    future.
  • Encoders that do provide inherent support for limits, or reserve a
    significant amount of internal memory, are urged to implement the
    set_limits extension to ImageDecoder. Some strict limit are opt-in, which
    may cause decoding to fail if not supported.

Miscellaneous:

  • PNMSubtype has been renamed to PnmSubtype, by Rust's naming scheme.
  • Several incorrectly capitalized PNM* aliases have been removed.
  • Several enum types that had previously used a hidden variant now use the
    official #[non_exhaustive] attribute instead.

v0.23.14

Compare Source

  • Unified gif blending in different decode methods, fixing out-of-bounds checks
    in a number of weirdly positioned frames.

  • Hardened TGA decoder against a number of malicious inputs.

  • Fix forward incompatible usage of the panic macro.

  • Fix load_rect for gif reaching unreachable!() code.

  • Added ExtendedColorType::A8.

  • Allow TGA to load alpha-only images.

  • Optimized load_rect to avoid unnecessary seeks.

v0.23.13

Compare Source

  • Fix an inconsistency in supported formats of different methods for encoding
    an image.

  • Fix thumbnail choosing an empty image. It now always prefer non-empty image
    dimensions.

  • Fix integer overflow in calculating requires bytes for decoded image buffers
    for farbfeld, hdr, and pnm decoders. These will now error early.

  • Fix a panic decoding certain jpeg image without frames or meta data.

  • Optimized the jpeg encoder.

  • Optimized GenericImage::copy_from default impl in various cases.

  • Add avif decoders. You must enable it explicitly and it is not covered by
    our usual MSRV policy of Rust 1.34. Instead, only latest stable is supported.

  • Add ImageFormat::{can_read, can_write}

  • Add Frame::buffer_mut

  • Add speed and quality options on avif encoder.

  • Add speed parameter to gif encoder.

  • Expose control over sequence repeat to the gif encoder.

  • Add {contrast,brighten,huerotate}_in_place functions in imageproc.

  • Relax Default impl of ImageBuffer, removing the bound on the color type.

  • Derive Debug, Hash, PartialEq, Eq for DynamicImage

v0.23.12

Compare Source

  • Fix a soundness issue affecting the impls of Pixel::from_slice_mut. This
    would previously reborrow the mutable input reference as a shared one but
    then proceed to construct the mutable result reference from it. While UB
    according to Rust's memory model, we're fairly certain that no miscompilation
    can happen with the LLVM codegen in practice.
    See 5cbe1e6 for more details.

  • Fix imageops::blur panicking when sigma = 0.0. It now defaults to 1.0
    as all negative values.

  • Fix re-exporting png::{CompressionType, FilterType} to maintain SemVer
    compatibility with the 0.23 releases.

  • Add ImageFormat::from_extension

  • Add copyless DynamicImage to byte slice/vec conversion.

  • Add bit-depth specific into_ and to_ DynamicImage conversion methods.

v0.23.11

Compare Source

  • The NeuQuant implementation is now supplied by color_quant. Use of the
    type defined by this library is discouraged.
  • The jpeg decoder can now downscale images that are decoded by 1,2,4,8.
  • Optimized the jpeg encoding ~5-15%.
  • Deprecated the clamp function. Use num-traits instead.
  • The ICO decoder now accepts an empty mask.
  • Fixed an overflow in ICO mask decoding potentially leading to panic.
  • Added ImageOutputFormat for AVIF
  • Updated tiff to 0.6 with lzw performance improvements.

v0.23.10

Compare Source

  • Added AVIF encoding capabilities using the ravif crate. Please note that
    the feature targets the latest stable compiler and is not enabled by default.
  • Added ImageBuffer::as_raw to inspect the underlying container.
  • Updated gif to 0.11 with large performance improvements.

v0.23.9

Compare Source

  • 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

Compare Source

  • 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

Compare Source

  • 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

Compare Source

  • 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

Compare Source

  • 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

Compare Source

  • 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

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate. View repository job log here.

@renovate renovate bot changed the title Update Rust crate image to 0.24.3 Update Rust crate image to 0.24.4 Sep 25, 2022
@renovate renovate bot changed the title Update Rust crate image to 0.24.4 Update Rust crate image to 0.24.5 Nov 20, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

0 participants