PackageTrack
Sign in Get early access

gif

GIF de- and encoder

0.14.2 122M downloads/mo #716 most downloaded on crates.io image-rs/image-gif

What this package is like to depend on

Last release 4 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

3 releases in the last 12 months

see the full history below

Release timeline

29 releases · May 2015 to Apr 2026
2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 29
  1. 0.14.2 09 Apr 2026
    Release notes

    Bugfixes:

    • Correctly recognize extension blocks that only have a terminator block, i.e.
      are completely empty. This affects Comment as most extensions have some
      minimum required data (e.g. Application Identifier, …). Such images might
      have erratically failed to parse, interpreting the following block type as a
      sub-block length.
    Open source →
    Release notes

    Bugfixes:

    • Correctly recognize extension blocks that only have a terminator block, i.e. are completely empty. This affects Comment as most extensions have some minimum required data (e.g. Application Identifier, …). Such images might have erratically failed to parse, interpreting the following block type as a sub-block length.
    Open source →
  2. 0.14.1 04 Dec 2025
    Release notes

    Features:

    • Added Frame::from_grayscale_with_alpha to efficiently generate a palette for LumaA pixels.
    • Added Decoder::current_frame_info to re-query the next_frame_info without advancing the frame.

    Enhancements:

    • The palette for Frame::from_rgba_speed now handles multiple transparent
      colors, i.e. non-premultiplied alpha, by normalizing fully transparent pixels
      to one transparent entry. This leads to a better distributed palette.
    Open source →
    Release notes

    Features:

    • Added Frame::from_grayscale_with_alpha to efficiently generate a palette for LumaA pixels.
    • Added Decoder::current_frame_info to re-query the next_frame_info without advancing the frame.

    Enhancements:

    • The palette for Frame::from_rgba_speed now handles multiple transparent colors, i.e. non-premultiplied alpha, by normalizing fully transparent pixels to one transparent entry. This leads to a better distributed palette.
    Open source →
  3. 0.14.0 12 Nov 2025
    Release notes
    • EncodingError and DecodingError are now #[non_exhaustive]
    • Modified several error paths to return a new variant of EncodingError instead of boxing them into
      an io::Error, several return Result types are adjusted accordingly.
    • The Decoded enum no longer communicates data from decoded sub-blocks such as the repetition count.
      It now only contains the meta information on framing and extension data. This ensures we are yielding
      less often for performance.
    • last_ext was renamed to last_extension_sub_block for clarity.
    • The Decoder will now collect XMP and ICC metadata subblocks, making them available after decoding.
    Open source →
    Release notes
    • EncodingError and DecodingError are now #[non_exhaustive]
    • Modified several error paths to return a new variant of EncodingError instead of boxing them into an io::Error, several return Result types are adjusted accordingly.
    • The Decoded enum no longer communicates data from decoded sub-blocks such as the repetition count. It now only contains the meta information on framing and extension data. This ensures we are yielding less often for performance.
    • last_ext was renamed to last_extension_sub_block for clarity.
    • The Decoder will now collect XMP and ICC metadata subblocks, making them available after decoding.
    Open source →
  4. 0.13.3 23 Jun 2025
    Release notes
    • Fix interpretation of LZW stream when multiple intermediate reset codes are used.
    • Allow extension blocks of unknown type with the allow_unknown_blocks option.
    Open source →
    Release notes
    • Fix interpretation of LZW stream when multiple intermediate reset codes are used.
    • Allow extension blocks of unknown type with the allow_unknown_blocks option.
    Open source →
  5. 0.13.2 21 Jun 2025
    Release notes
    • Simplified internal decoder size
    Open source →
  6. 0.13.1 23 Jan 2024
    Release notes

    Bugfixes:

    • Fixed writing palettes with non-power-of-two sizes
    Open source →
  7. 0.13.0 22 Jan 2024
    Release notes

    Features:

    • Added Iterator interface for the Decoder
    • Added reading number of loop repetitions Decoder::repeat.
    • Added 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.
    • Added support pre-allocated Vecs in from_palette_pixels
    • Added ability to recover the io::Reader after decoding.
    • Added support for decompressing Frame.buffer with LZW data, which enables fully parallel GIF re-encoding (see examples/parallel.rs),

    Optimization:

    • Less buffering, copying, and lower peak memory usage.

    Other changes:

    • Removed unsafe {} code.
    • Enforced memory limit also on metadata extension blocks, and added out-of-memory checks where possible.
    • EncodingFormatError enum is public.
    • Removed defunct skip_extensions
    • Added validation of frame dimensions. The buffer must be large enough for all pixels, and if the width or height is 0, the buffer must be empty.
    Open source →
  8. 0.13.0-beta.1 15 Jan 2024 pre-release

    Nothing published for this version

  9. 0.12.0 17 Nov 2022
    Release notes

    Features:

    • Add compression of pre-compressed frame data, via Encoder::write_lzw_pre_encoded_frame.
    • The color_quant dependency is now optional. Turning it off disables some
      interfaces that would internally build quantization tables. The generic
      implementation of creating such tables can be prohibitively costly compared
      to specialized algorithms in some use cases.

    Optimization:

    • Avoid some allocations in by replacing flat_map argument with arrays

    sha256sum: 80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045 target/package/gif-0.12.0.crate

    Open source →
    Release notes

    Features:

    • Add compression of pre-compressed frame data, via Encoder::write_lzw_pre_encoded_frame.
    • The color_quant dependency is now optional. Turning it off disables some interfaces that would internally build quantization tables. The generic implementation of creating such tables can be prohibitively costly compared to specialized algorithms in some use cases.

    Optimization:

    • Avoid some allocations in by replacing flat_map argument with arrays
    Open source →
  10. 0.11.4 27 Jun 2022
    Release notes

    Bufixes:

    • Fix decoding confusing superfluous image data from previous frames with
      current frame data.
    • Bump minimum required version of weezl.

    Features:

    • Add Encoder::{get_ref, get_mut, into_inner} to access underlying stream.
    Open source →
    Release notes

    Bufixes:

    • Fix decoding confusing superfluous image data from previous frames with current frame data.
    • Bump minimum required version of weezl.

    Features:

    • Add Encoder::{get_ref, get_mut, into_inner} to access underlying stream.
    Open source →
  11. 0.11.3 14 Oct 2021
    Release notes

    Bugfixes:

    • Fix panic while decoding some images, has no precise cause in the file.
    • Warn about set_extensions being unimplemented...

    Features:

    • Added StreamingDecoder::version to query the precise version of the
      standard used for encoding the file. This is merely a hint.
    • Added DecodeOptions::allow_unknown_blocks to skip over unknown or
      unspecified block kinds.

    Optimization:

    • Frame::from_rgba now recognizes when less than 256 colors are being used,
      dynamically skipping the quantization phase.
    • Encoding image chunks is faster and simpler
    Open source →
    Release notes

    Bugfixes:

    • Fix panic while decoding some images, has no precise cause in the file.
    • Warn about set_extensions being unimplemented...

    Features:

    • Added StreamingDecoder::version to query the precise version of the standard used for encoding the file. This is merely a hint.
    • Added DecodeOptions::allow_unknown_blocks to skip over unknown or unspecified block kinds.

    Optimization:

    • Frame::from_rgba now recognizes when less than 256 colors are being used, dynamically skipping the quantization phase.
    • Encoding image chunks is faster and simpler
    Open source →
  12. 0.11.2 22 Mar 2021
    Release notes
    • Fix panic when LZW code size is invalid
    • Added option to omit check for lzw end code

    sha256sum:
    5a668f699973d0f573d15749b7002a9ac9e1f9c6b220e7b165601334c173d8de target/package/gif-0.11.2.crate

    Open source →
    Release notes
    • Fix panic when LZW code size is invalid
    • Added option to omit check for lzw end code
    Open source →
  13. 0.11.1 25 Sep 2020
    Release notes
    • Frames out-of-bounds of the screen descriptor are again accepted by default.
    • Added DecodeOptions::check_frame_consistency to turn this validation on.
    Open source →
  14. 0.11.0 20 Sep 2020

    Nothing published for this version

  15. 0.10.3 18 Sep 2019

    Nothing published for this version

  16. 0.10.2 01 Jun 2019

    Nothing published for this version

  17. 0.10.1 02 Oct 2018

    Nothing published for this version

  18. 0.10.0 15 Apr 2018

    Nothing published for this version

  19. 0.9.2 11 Jun 2017

    Nothing published for this version

  20. 0.9.1 24 Feb 2017

    Nothing published for this version

  21. 0.9.0 06 Jun 2016

    Nothing published for this version

  22. 0.8.0 28 Feb 2016

    Nothing published for this version

  23. 0.7.0 12 Dec 2015

    Nothing published for this version

  24. 0.6.0 09 Nov 2015

    Nothing published for this version

  25. 0.5.1 14 Oct 2015

    Nothing published for this version

  26. 0.5.0 05 Jun 2015

    Nothing published for this version

  27. 0.4.1 30 May 2015

    Nothing published for this version

  28. 0.4.0 30 May 2015

    Nothing published for this version

  29. 0.3.0 29 May 2015

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive