https://github.com/image-rs/image-tiff
TIFF decoding and encoding library in pure Rust
https://github.com/image-rs/image-tiff
hackoctoberfest
Last synced: about 1 month ago
JSON representation
TIFF decoding and encoding library in pure Rust
- Host: GitHub
- URL: https://github.com/image-rs/image-tiff
- Owner: image-rs
- License: mit
- Created: 2018-03-12T12:43:42.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2025-03-16T21:31:12.000Z (3 months ago)
- Last Synced: 2025-03-20T20:17:40.077Z (3 months ago)
- Language: Rust
- Homepage:
- Size: 8.53 MB
- Stars: 130
- Watchers: 39
- Forks: 82
- Open Issues: 51
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGES.md
- License: LICENSE
Awesome Lists containing this project
README
# image-tiff
[](https://github.com/image-rs/image-tiff/actions)
[](https://docs.rs/tiff)
[](https://crates.io/crates/tiff)TIFF decoding and encoding library in pure Rust
## Supported
### Features
- Baseline spec (other than formats and tags listed below as not supported)
- Multipage
- BigTIFF
- Incremental decoding### Formats
This table lists photometric interpretations and sample formats which are supported for encoding and decoding. The entries are `ColorType` variants for which sample bit depths are supported. Only samples where all bit depths are equal are currently supported. For example, `RGB(8)` means that the bit depth [8, 8, 8] is supported and will be interpreted as an 8 bit per channel RGB color type.| `PhotometricInterpretation` | UINT Format | IEEEFP Format |
| --------------------------- | --------------------------------------- | ------------------------- |
| `WhiteIsZero` | Gray(8\|16\|32\|64) | Gray(32\|64) |
| `BlackIsZero` | Gray(8\|16\|32\|64) | Gray(32\|64) |
| `RGB` | RGB(8\|16\|32\|64), RGBA(8\|16\|32\|64) | RGB(32\|64), RGBA(32\|64) |
| `RGBPalette` | | |
| `Mask` | | |
| `CMYK` | CMYK(8\|16\|32\|64) | CMYK(32\|64) |
| `YCbCr` | | |
| `CIELab` | | |### Compressions
| | Decoding | Encoding |
| -------- | -------- | -------- |
| None | ✓ | ✓ |
| LZW | ✓ | ✓ |
| Deflate | ✓ | ✓ |
| PackBits | ✓ | ✓ |
| JPEG | ✓ | not yet |
| ZSTD | ✓ | not yet |## Not yet supported
Formats and interpretations not listed above or with empty entries are unsupported.
- Baseline tags
- `ExtraSamples`
- Extension tags## Fuzzing
This crate uses [cargo-fuzz](https://github.com/rust-fuzz/cargo-fuzz) in order to test the image parser.
After installing it with `cargo install cargo-fuzz` on a nightly rustc, the
fuzzing harness can be run with recommended settings using
`cargo fuzz run decode_image -snone -- -timeout=5`.