Expand description
§async-tiff
An async, low-level TIFF reader for Rust and Python.
Rust documentation
Python documentation
§Features
- Async, read-only support for tiled TIFF images.
- Read directly from object storage providers, via the
object_storecrate. - Separation of concerns between data reading and decoding so that IO-bound and CPU-bound tasks can be scheduled appropriately.
- Support for user-defined decompression algorithms.
- Tile request merging and concurrency.
- Integration with the
ndarraycrate for easy manipulation of decoded image data. - Support for GeoTIFF tag metadata.
§Example
use object_store::local::LocalFileSystem;
use async_tiff::metadata::TiffMetadataReader;
use async_tiff::metadata::cache::ReadaheadMetadataCache;
use async_tiff::reader::ObjectReader;
use async_tiff::TIFF;
let store = Arc::new(LocalFileSystem::new_with_prefix(current_dir().unwrap()).unwrap());
let reader = ObjectReader::new(store, "fixtures/image-tiff/tiled-jpeg-rgb-u8.tif".into());
let cache = ReadaheadMetadataCache::new(reader.clone());
let mut meta = TiffMetadataReader::try_open(&cache).await.unwrap();
let ifds = meta.read_all_ifds(&cache).await.unwrap();
let tiff = TIFF::new(ifds, meta.endianness());
// Fetch and decode a tile
let tile = tiff.ifds()[0].fetch_tile(0, 0, &reader).await.unwrap();
let array = tile.decode(&Default::default()).unwrap();
println!("shape: {:?}, dtype: {:?}", array.shape(), array.data_type());§Background
The existing tiff crate is great, but only supports synchronous reading of TIFF files. Furthermore, due to low maintenance bandwidth it is not designed for extensibility (see #250).
Modules§
- decoder
- Decoders for different TIFF compression methods.
- error
- Error handling.
- geo
- Support for GeoTIFF files.
- metadata
- API for reading metadata out of a TIFF file.
- reader
- Abstractions for network reading.
- tags
- TIFF tag definitions and enum types.
Structs§
- Array
- A 3D array that represents decoded TIFF image data.
- Image
File Directory - An ImageFileDirectory representing Image content
- TIFF
- A TIFF file.
- Tile
- A TIFF Tile response.
Enums§
- Data
Type - Supported numeric data types for array elements.
- TagValue
- A dynamically-typed value parsed from a TIFF IFD entry.
- Typed
Array - An enum representing a typed view of the array data.