image-extras

Crates.ioimage-extras
lib.rsimage-extras
version0.1.0
created_at2025-08-30 03:20:15.887777+00
updated_at2025-12-15 02:45:12.613313+00
descriptionAdditional image format decoders for the image crate
homepage
repositoryhttps://github.com/image-rs/image-extras
max_upload_size
id1817211
size182,739
Publish (github:image-rs:publish)

documentation

README

image-extras

Support for additional image formats beyond those provided by the image crate.

Usage

Call the register function at program startup:

fn main() {
    image_extras::register();

    // Now you can use the image crate as normal
    let img = image::open("path/to/image.pcx").unwrap();
}

By default, all supported formats are enabled. For finer control, enable individual formats via Cargo features:

[dependencies]
image_extras = { version = "0.1", features = ["pcx"], default-features = false }

Supported Formats

Feature Format
ora OpenRaster [spec]
otb OTA Bitmap (Over The Air Bitmap) [desc]
pcx PCX (ZSoft Paintbrush bitmap/PiCture eXchange) [desc]
sgi SGI (Silicon Graphics Image) [spec]
wbmp Wireless Bitmap [spec]
xbm X BitMap [spec]
xpm X PixMap [spec]

By default, image-extras enables support for all included formats. This is convenient for prototyping, but for other uses you are encouraged to evaluate the individual implementations and enable only the ones that meet your quality/robustness requirements.

New Formats

We welcome PRs to add support for additional image formats.

Required criteria

  • Must be one of the raster image formats recognized by ImageMagick.
  • No patent or licensing restrictions.
  • Specification or sufficiently detailed file format description freely available online.
  • Must include multiple test images, and their source/license should be mentioned in the PR description.
  • Implementation must be entirely in Rust.

Additional nice-to-haves

  • Minimal or no dependencies on external libraries.
  • No use of unsafe code.

Version Compatibility

image crate version Compatible image-extras versions
0.25.x 0.1.x

Fuzzing

Fuzzing is not a priority for this crate and decoders may panic or worse on malformed input. Please do not open issues for crashes found by fuzzing, unless they are memory safety violations, though PRs fixing them are welcome.

This is an intentional tradeoff to balance the inclusion criteria for new formats with maintainer time and effort.

Commit count: 9

cargo fmt