Repository navigation
wsi-rs 0.9.1
wsi-rs 0.9.1 is a patch release with fixes to the tile byte locations and lossless raw reads added in 0.9.0 (#27, #32). There are no API changes. It still uses J2K 0.13.1 and JXR 0.4.0 and needs Rust 1.99 or newer.
The Python bindings are on PyPI as wsi-rs (pip install -U wsi-rs). The abi3 wheels support Python 3.10 and newer on:
- Linux x86_64 and aarch64;
- macOS arm64 and x86_64;
- Windows x64.
The wheels and sdist are attached to this release.
[0.9.1] - 2026-11-01
Fixes to the tile locations and lossless raw reads added in 0.9.0. No API
changes.
Fixed
- Raw reads of clipped right and bottom edge tiles now report the stored
tile's size, withRawCompressedTile::tile_regionlocating the tile inside
it, astile_locationdoes, for TIFF JPEG XR tiles and NDPI tiles read
through restart markers. JPEG XR edge tiles reported the clipped size for a
codestream holding the whole tile, and NDPI edge tiles reported no region. - A raw read cut from a baseline or progressive JPEG that the lossless crop
cannot cut, such as a single component sampled 2x2, now returns the whole
stored JPEG withtile_regionlocating the tile, as a crop over its memory
limit does, instead of failing. A crop source that breaks the JPEG
standard (a zero quantizer, repeated component IDs, sampling factors
outside 1 to 4 or more than 10 blocks per MCU) now fails with
WsiError::Jpegrather thanWsiError::Unsupported. EncodedUnit::assembleand TIFF JPEG raw reads mergeJPEGTablesinto a
tile whenever the tile references a quantization or Huffman table it does
not define. Before, a tile carrying any table of each kind was returned
unchanged, so a tile with its own table 0 that needed table 1 from
JPEGTablescould not be decoded on its own. Tables the tile defines still
take precedence.- DICOM
tile_locationnow checks that the file is the one opened, as tile
reads do, and returns the "source changed" error for a replaced file
instead of byte ranges computed against the old one.