Tags: SAY-5/image
Tags
Release 0.25.10
Features:
- Added `GenericImage::copy_from_samples` that can be implemented for images
that can be efficiently filled from a matrix-layout of samples. Its default
implementation will *not* defer to `copy_from`, consider implementing this if
you specialized the latter.
- Added `GenericImageView::to_pixel_view` that can be implemented to describe
the buffer in terms our `FlatSamples` matrix layout, if applicable. This
allows algorithms over generic images to run a specialized version where they
can be more efficient over an raw input slice.
- Added `ImageBuffer::from_raw_bgr{,a}` to efficiently byte-swap images into
the RGBA layout of the buffer (image-rs#2596).
- Added `ExtendedColorType::Rgb5x1` to represent 5-bit colors as from TGA (image-rs#2609).
- Added `metadata::LoopCount` and `AnimationDecoder::loop_count` to query if
animations should repeat in a uniform manner (gif, webp, avif) (image-rs#2719, image-rs#2786).
- `load_from_memory` now utilizes format detection hooks if any are applicable.
Structural changes:
- Various changes that reduce the compile time of `image` on codegen by
reducing the number of monomorphizations (image-rs#2804, image-rs#2800, image-rs#2807).
- `GenericImage::copy_from`'s default implementation tries `copy_from_samples`
first if the source can be successfully cast with `to_pixel_view`.
- `<ImageBuffer as GenericImage>::copy_from` is now must faster for
`ImageBuffer` when the source implements `GenericImageView::to_pixel_view`.
- `<SubImage<_> as GenericImage>::copy_from` inherits the previously mentioned
optimizations for pixel sources when the inner type provides them. It also
provides `to_pixel_view` based on the inner type.
- `ImageBuffer::as_flat_samples` no longer requires `AsRef<[P::Subpixel]>` for
the underlying container, just `Deref` (image-rs#2777).
Bug fixes:
- Fixed a panic in TGA where indices have more bits than mapped colors (image-rs#2673).
Notable decoder changes:
- Bump `tiff` to `0.11`, supporting planar layout images (image-rs#2743).
- ICC profiles can now be written for TIFF files (image-rs#2746)
- Update `ravif` to `0.13`, supporting EXIF (image-rs#2733).
- Update `jpeg-encoder` to `0.7` bringing SIMD acceleration (image-rs#2736).
- The `pnm` decoder decodes binary data quicker with fewer allocations (image-rs#2797).
- The `tga` decoder handles 5-bit data and colormaps correctly (image-rs#2608, image-rs#2609).
Compatibility notes (new section):
- Bump rust-version to `1.88`.
- Registered hooks now normalize the file extension they are registered against
to ascii-lowercase. It is no longer necessary to register all such variants.
This may conflate two hooks that previously hooked the same format with
different casing.
Release 0.25.9 Features: - Support extracting XMP metadata from PNG, JPEG, GIF, WebP and TIFF files (image-rs#2567, image-rs#2634, image-rs#2644) - Support reading IPTC metadata from PNG and JPG files (image-rs#2611) - Support reading ICC profile from GIF files (image-rs#2644) - Allow setting a specific DEFLATE compression level when writing PNG (image-rs#2583) - Initial support for 16-bit CMYK TIFF files (image-rs#2588) - Allow extracting the alpha channel of a `Pixel` in a generic way (image-rs#2638) Structural changes: - EXR format decoding now only uses multi-threading via Rayon when the `rayon` feature is enabled (image-rs#2643) - Upgraded zune-jpeg to 0.5.x, ravif to 0.12.x, gif to 0.14.x - pnm: parse integers in PBM/PGM/PPM headers without allocations (image-rs#2620) - Replace `doc_auto_cfg` with `doc_cfg` (image-rs#2637) Bug fixes: - Do not encode empty JPEG images (image-rs#2624) - tga: reject empty images (image-rs#2614) - tga: fix orientation flip for color mapped images (image-rs#2607) - tga: adjust colormap lookup to match tga 2.0 spec (image-rs#2608)
Release 0.25.8 Re-release of `0.25.7` Fixes: - Reverted a signature change to `load_from_memory` that lead to large scale type inference breakage despite being technically compatible. - Color conversion Luma to Rgb used incorrect coefficients instead of broadcasting. From version 0.25.7 (yanked) Features: - Added an API for external image format implementations to register themselves as decoders for a specific format in `image` (image-rs#2372) - Added [CICP](https://www.color.org/iccmax/download/CICP_tag_and_type_amendment.pdf) awarenes via [moxcms](https://crates.io/crates/moxcms) to support color spaces (image-rs#2531). The support for transforming is limited for now and will be gradually expanded. - You can now embed Exif metadata when writing JPEG, PNG and WebP images (image-rs#2537, image-rs#2539) - Added functions to extract orientation from Exif metadata and optionally clear it in the Exif chunk (image-rs#2484) - Serde support for more types (image-rs#2445) - PNM encoder now supports writing 16-bit images (image-rs#2431) API improvements: - `save`, `save_with_format`, `write_to` and `write_with_encoder` methods on `DynamicImage` now automatically convert the pixel format when necessary instead of returning an error (image-rs#2501) - Added `DynamicImage::has_alpha()` convenience method - Implemented `TryFrom<ExtendedColorType>` for `ColorType` (image-rs#2444) - Added `const HAS_ALPHA` to trait `Pixel` - Unified the error for unsupported encoder colors (image-rs#2543) - Added a `hooks` module to customize builtin behavior, `register_format_detection_hook` and `register_decoding_hook` for the determining format of a file and selecting an `ImageDecoder` implementation respectively. (image-rs#2372) Performance improvements: - Gaussian blur (image-rs#2496) and box blur (image-rs#2515) are now faster - Improve compilation times by avoiding unnecessary instantiation of generic functions (image-rs#2468, image-rs#2470) Bug fixes: - Many improvements to image format decoding: TIFF, WebP, AVIF, PNG, GIF, BMP, TGA - Fixed `GifEncoder::encode()` ignoring the speed parameter and always using the slowest speed (image-rs#2504) - `.pnm` is now recognized as a file extension for the PNM format (image-rs#2559)
Release 0.25.7 Features: - Added an API for external image format implementations to register themselves as decoders for a specific format in `image` (image-rs#2372) - Added [CICP](https://www.color.org/iccmax/download/CICP_tag_and_type_amendment.pdf) awarenes via [moxcms](https://crates.io/crates/moxcms) to support color spaces (image-rs#2531). The support for transforming is limited for now and will be gradually expanded. - You can now embed Exif metadata when writing JPEG, PNG and WebP images (image-rs#2537, image-rs#2539) - Added functions to extract orientation from Exif metadata and optionally clear it in the Exif chunk (image-rs#2484) - Serde support for more types (image-rs#2445) - PNM encoder now supports writing 16-bit images (image-rs#2431) API improvements: - `save`, `save_with_format`, `write_to` and `write_with_encoder` methods on `DynamicImage` now automatically convert the pixel format when necessary instead of returning an error (image-rs#2501) - Added `DynamicImage::has_alpha()` convenience method - Implemented `TryFrom<ExtendedColorType>` for `ColorType` (image-rs#2444) - Added `const HAS_ALPHA` to trait `Pixel` - Unified the error for unsupported encoder colors (image-rs#2543) - Added a `hooks` module to customize builtin behavior, `register_format_detection_hook` and `register_decoding_hook` for the determining format of a file and selecting an `ImageDecoder` implementation respectively. (image-rs#2372) Performance improvements: - Gaussian blur (image-rs#2496) and box blur (image-rs#2515) are now faster - Improve compilation times by avoiding unnecessary instantiation of generic functions (image-rs#2468, image-rs#2470) Bug fixes: - Many improvements to image format decoding: TIFF, WebP, AVIF, PNG, GIF, BMP, TGA - Fixed `GifEncoder::encode()` ignoring the speed parameter and always using the slowest speed (image-rs#2504) - `.pnm` is now recognized as a file extension for the PNM format (image-rs#2559)
Release 0.25.5 Features: - Added support for decoding 10-bit and 12-bit AVIF - Initial, opt-in serde support for an enum. This may be extended to other types in the future. Bug fixes: - [Multiple bug fixes in AVIF decoding](image-rs#2373) - The `rayon` feature now correctly toggles the use of `rayon` when encoding AVIF. (Previously it would be either always on or always off depending on the version of the `ravif` crate in your dependency tree.) - "jfif" file extension for JPEG images is now recognized
Merge pull request image-rs#2354 from image-rs/release-0.25.4 Propose wording for republishing as 0.25.4
Release 0.25.3 Features: - Much faster decoding of lossless WebP due to a variety of optimizations. Our benchmarks show 2x to 2.5x improvement. - Added support for orientation metadata, so that e.g. smartphone camera images could be displayed correctly: - Added `ImageDecoder::orientation()` and implemented orientation metadata extraction for JPEG, WebP and TIFF formats - Added `DynamicImage::apply_orientation()` to apply the orientation to an image - Added support for extracting Exif metadata from images via `ImageDecoder::exif_metadata()`, and implemented it for JPEG and WebP formats - Added `ImageEncoder::set_icc_profile()` and implemented it for WebP format. Pull requests with implementations for other formats are welcome. - Added `DynamicImage::fast_blur()` for a linear-time approximation of Gaussian blur, which is much faster at larger blur radii Bug fixes: - Fixed some APNG images being decoded incorrectly - Fixed the iterator over animated WebP frames to return `None` instead of an error when the end of the animation is reached - Toggling the `rayon` feature now correctly toggles the use of `rayon` within `ravif` (AVIF encoder). Previously it would be either always on or always off, depending on the `ravif` version.
Release 0.25.2 Features: - Added the HDR encoder to supported formats in generic write methods with the `hdr` feature enabled. Supports 32-bit float RGB color only, for now. - When cloning `ImageBuffer`, `DynamicImage` and `Frame` the existing buffer will now be reused if possible. - Added `image::ImageReader` as an alias. - Implement `ImageEncoder` for `HdrEncoder`. Structural changes - Switch from `byteorder` to `byteorder-lite`, consolidating some casting unsafety to `bytemuck`. - Many methods on `DynamicImage` and buffers gained `#[must_use]` indications. Bug fixes: - Removed test data included in the crate archive. - The WebP animation decoder stops when reaching the indicate frame count. - Fixed bugs in the `bmp` decoder. - Format support gated on the `exr` feature now compiles in isolation.
PreviousNext