NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #706 most downloaded on crates.io
GIF de- and encoder
Last release 6 months ago
09 Apr 2026
Release timing varies
gaps range from 8 days to 1.4 years
Some releases are documented
notes for 12 of 28 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
29 releases · first in 2015
Correctly recognize extension blocks that only have a terminator block, i.e. are completely empty. This affects Comment as most extensions have some m
Bugfixes:
Added Frame::from_grayscale_with_alpha to efficiently generate a palette for LumaA pixels.
Features:
Frame::from_grayscale_with_alpha to efficiently generate a palette for LumaA pixels.Decoder::current_frame_info to re-query the next_frame_info without advancing the frame.Enhancements:
Frame::from_rgba_speed now handles multiple transparentOne column per quarter.
EncodingError and DecodingError are now #[non_exhaustive]
EncodingError and DecodingError are now #[non_exhaustive]EncodingError instead of boxing them intoio::Error, several return Result types are adjusted accordingly.Decoded enum no longer communicates data from decoded sub-blocks such as the repetition count.last_ext was renamed to last_extension_sub_block for clarity.Decoder will now collect XMP and ICC metadata subblocks, making them available after decoding.Fix interpretation of LZW stream when multiple intermediate reset codes are used.
allow_unknown_blocks option.Simplified internal decoder size
Fixed writing palettes with non-power-of-two sizes
Bugfixes:
Added Iterator interface for the Decoder
Features:
Iterator interface for the DecoderDecoder::repeat.skip_frame_decoding option to read Frame.buffer as LZW data.
It works together with write_lzw_pre_encoded_frame for quick rewriting of GIF files.Vecs in from_palette_pixelsio::Reader after decoding.Frame.buffer with LZW data,
which enables fully parallel GIF re-encoding (see examples/parallel.rs),Optimization:
Other changes:
unsafe {} code.EncodingFormatError enum is public.skip_extensionsNothing published for this version
Add compression of pre-compressed frame data, via Encoder::write_lzw_pre_encoded_frame .
Features:
Encoder::write_lzw_pre_encoded_frame.color_quant dependency is now optional. Turning it off disables someOptimization:
flat_map argument with arrayssha256sum: 80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045 target/package/gif-0.12.0.crate
Fix decoding confusing superfluous image data from previous frames with current frame data.
Bufixes:
weezl.Features:
Encoder::{get_ref, get_mut, into_inner} to access underlying stream.Fix panic while decoding some images, has no precise cause in the file.
Bugfixes:
set_extensions being unimplemented...Features:
StreamingDecoder::version to query the precise version of theDecodeOptions::allow_unknown_blocks to skip over unknown orOptimization:
Frame::from_rgba now recognizes when less than 256 colors are being used,Fix panic when LZW code size is invalid
sha256sum:
5a668f699973d0f573d15749b7002a9ac9e1f9c6b220e7b165601334c173d8de target/package/gif-0.11.2.crate
Frames out-of-bounds of the screen descriptor are again accepted by default.
DecodeOptions::check_frame_consistency to turn this validation on.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →