ImageBuffer::get_pixel_checked would sometimes return the incorrect pixel.
PNG encoding would sometimes not recognize unsupported color.
Version 0.24.0
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 privatePixelWithColorType 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
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Updates the requirements on image to permit the latest version.
Changelog
Sourced from image's changelog.
... (truncated)
Commits
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)