1# Rust Image Release Notes 2 3Rust image aims to be a pure-Rust implementation of various popular image formats. Accompanying reading/write support, rust image provides basic imaging processing function. See `README.md` for further details. 4 5## Known issues 6 - Interlaced (progressive) or animated images are not well supported. 7 - Images with *n* bit/channel (*n ≠ 8*) are not well supported. 8 9## Changes 10 11### Version 0.22.3 12 13- Added a new module `io` containing a configurable `Reader`. It can replace 14 the bunch of free functions: `image::{load_*, open, image_dimensions}` while 15 enabling new combinations such as `open` but with format deduced from content 16 instead of file path. 17- Fixed `const_err` lint in the macro expanded implementations of `Pixel`. This 18 can only affect your crate if `image` is used as a path dependency. 19 20### Version 0.22.2 21 22- Undeprecate `unsafe` trait accessors. Further evaluation showed that their 23 deprecation should be delayed until trait `impl` specialization is available. 24- Fixed magic bytes used to detect `tiff` images. 25- Added `DynamicImage::from_decoder`. 26- Fixed a bug in the `PNGReader` that caused an infinite loop. 27- Added `ColorType::{bits_per_pixel, num_components}`. 28- Added `ImageFormat::from_path`, same format deduction as the `open` method. 29- Fixed a panic in the gif decoder. 30- Aligned background color handling of `gif` to web browser implementations. 31- Fixed handling of partial frames in animated `gif`. 32- Removed unused direct `lzw` dependency, an indirect dependency in `tiff`. 33 34### Version 0.22.1 35 36- Fixed build without no features enabled 37 38### Version 0.22 39 40- The required Rust version is now `1.34.2`. 41- Note the website and blog: [image-rs.org][1] and [blog.image-rs.org][2] 42- `PixelMut` now only on `ImageBuffer` and removed from `GenericImage` 43 interface. Prefer iterating manually in the generic case. 44- Replaced an unsafe interface in the hdr decoder with a safe variant. 45- Support loading 2-bit BMP images 46- Add method to save an `ImageBuffer`/`DynamicImage` with specified format 47- Update tiff to `0.3` with a writer 48- Update png to `0.15`, fixes reading of interlaced sub-byte pixels 49- Always use custom struct for `ImageDecoder::Reader` 50- Added `apply_without_alpha` and `map_without_alpha` to `Pixel` trait 51- Pixel information now with associated constants instead of static methods 52- Changed color structs to tuple types with single component. Improves 53 ergonomics of destructuring assignment and construction. 54- Add lifetime parameter on `ImageDecoder` trait. 55- Remove unecessary `'static` bounds on affine operations 56- Add function to retrieve image dimensions without loading full image 57- Allow different image types in overlay and replace 58- Iterators over rows of `ImageBuffer`, mutable variants 59 60[1]: https://www.image-rs.org 61[2]: https://blog.image-rs.org 62 63### Version 0.21.2 64 65- Fixed a variety of crashes and opaque errors in webp 66- Updated the png limits to be less restrictive 67- Reworked even more `unsafe` operations into safe alternatives 68- Derived Debug on FilterType and Deref on Pixel 69- Removed a restriction on DXT to always require power of two dimensions 70- Change the encoding of RGBA in bmp using bitfields 71- Corrected various urls 72 73### Version 0.21.1 74 75- A fairly important bugfix backport 76- Fixed a potentially memory safety issue in the hdr and tiff decoders, see #885 77- See [the full advisory](docs/2019-04-23-memory-unsafety.md) for an analysis 78- Fixes `ImageBuffer` index calculation for very, very large images 79- Fix some crashes while parsing specific incomplete pnm images 80- Added comprehensive fuzzing for the pam image types 81 82### Version 0.21 83 84- Updated README to use `GenericImageView` 85- Removed outdated version number from CHANGES 86- Compiles now with wasm-unknown-emscripten target 87- Restructured `ImageDecoder` trait 88- Updated README with a more colorful example for the Julia fractal 89- Use Rust 1.24.1 as minimum supported version 90- Support for loading GIF frames one at a time with `animation::Frames` 91- The TGA decoder now recognizes 32 bpp as RGBA(8) 92- Fixed `to_bgra` document comment 93- Added release test script 94- Removed unsafe code blocks several places 95- Fixed overlay overflow bug issues with documented proofs 96 97### Version 0.20 98 99- Clippy lint pass 100- Updated num-rational dependency 101- Added BGRA and BGR color types 102- Improved performance of image resizing 103- Improved PBM decoding 104- PNM P4 decoding now returns bits instead of bytes 105- Fixed move of overlapping buffers in BMP decoder 106- Fixed some document comments 107- `GenericImage` and `GenericImageView` is now object-safe 108- Moved TIFF code to its own library 109- Fixed README examples 110- Fixed ordering of interpolated parameters in TIFF decode error string 111- Thumbnail now handles upscaling 112- GIF encoding for multiple frames 113- Improved subimages API 114- Cargo fmt fixes 115 116### Version 0.19 117 118- Fixed panic when blending with alpha zero. 119- Made `save` consistent. 120- Consistent size calculation. 121- Fixed bug in `apply_with_alpha`. 122- Implemented `TGADecoder::read_scanline`. 123- Use deprecated attribute for `pixels_mut`. 124- Fixed bug in JPEG grayscale encoding. 125- Fixed multi image TIFF. 126- PNM encoder. 127- Added `#[derive(Hash)]` for `ColorType`. 128- Use `num-derive` for `#[derive(FromPrimitive)]`. 129- Added `into_frames` implementation for GIF. 130- Made rayon an optional dependency. 131- Fixed issue where resizing image did not give exact width/height. 132- Improved downscale. 133- Added a way to expose options when saving files. 134- Fixed some compiler warnings. 135- Switched to lzw crate instead of using built-in version. 136- Added `ExactSizeIterator` implementations to buffer structs. 137- Added `resize_to_fill` method. 138- DXT encoding support. 139- Applied clippy suggestions. 140 141### Version 0.4 142 - Various improvements. 143 - Additional supported image formats (BMP and ICO). 144 - GIF and PNG codec moved into separate crates. 145 146### Version 0.3 147 - Replace `std::old_io` with `std::io`. 148 149### Version 0.2 150 - Support for interlaced PNG images. 151 - Writing support for GIF images (full color and paletted). 152 - Color quantizer that converts 32bit images to paletted including the alpha channel. 153 - Initial support for reading TGA images. 154 - Reading support for TIFF images (packbits and FAX compression not supported). 155 - Various bug fixes and improvements. 156 157### Version 0.1 158- Initial release 159- Basic reading support for png, jpeg, gif, ppm and webp. 160- Basic writing support for png and jpeg. 161- A collection of basic imaging processing function like `blur` or `invert` 162