xisf-rs

Crates.io docs.rs Minimum rustc version License

An unaffiliated implementation of Pleiades Astrophoto's open-source Extensible Image Serialization Format (XISF) file format, the native image format for their flagship editing software PixInsight. Aims for 100% support for spec version 1.0, as opposed to implementations such as libXISF or Pleiades Astrophoto's own PixInsight Class Libraries, which are written with 2D images in mind. Currently under rapid development, but all changes to the public API will be accompanied with a version update following Cargo's SemVer guidelines before being pushed to crates.io.

Feature Comparison

  | xisf-rs | libXISF | PCL ---|:---:|:---:|:---: Language | Rust | C++ | C++ License | MIT | GPLv3 | BSD-4-Clause-like Monolithic Files | Decode | Encode + Decode | Encode + Decode Distributed Files | ❌ | ❌ | ❌ N-D Images | ✅ | | Pixel Sample Formats | Scalar, Complex | Agnostic (Raw Bytes Only) | Scalar1, Complex Image Metadata | Attributes, FITS Keywords |

Attributes2, FITS Keywords3, XISF Properties, Thumbnail, CFA, ICC Profile
|
Attributes4, FITS Keywords, XISF Properties, Thumbnail, CFA, ICC Profile, RGB Working Space, Display Function, Resolution
Supported XISF Property Locations | ❌ | <Image>5 | <Image>, <Metadata>, <xisf> <Table> Element | ❌ | ❌ | ❌ <Reference> Element | ✅ | ❌ | ❌ Data Block Compression |
zlib, lz4, lz4hc
|
6zlib, lz4, lz4hc, zstd
|
zlib, lz4, lz4hc
Checksum Verification | ✅ | ❌ | ✅ XML Digital Signature Verification | ❌ | ❌ | ❌

  1. Does not support 64-bit integers
  2. Only mandatory attributes and colorSpace
  3. Raw strings only; cannot parse values
  4. Missing imageType, offset, orientation, and uuid attributes
  5. Int32, Float32, Float64, String, and TimePoint only
  6. Sub-blocks not yet supported (this limits supported images to 4GiB); zstd support is nonstandard

Dependencies

Road Map