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 |

Decode (Partial)file, http, https, ftp, see road map
| ❌ | ❌ N-D Images | ✅ | | Pixel Sample Formats | Scalar, Complex | Agnostic (Raw Bytes Only) | Scalar1, Complex Image Metadata |
Attributes, XISF Properties2, FITS Keywords, ICC Profile, RGB Working Space, Display Function, CFA, Resolution, Thumbnail
|
Attributes3, XISF Properties4, FITS Keywords5, ICC Profile, CFA, Thumbnail
|
Attributes6, XISF Properties, FITS Keywords, ICC Profile, RGB Working Space, Display Function, CFA, Resolution, Thumbnail
Supported XISF Property Locations | <Image>, <Metadata>, <xisf> | <Image> | <Image>, <Metadata>, <xisf> <Table> Element | ❌ | ❌ | ❌ <Reference> Element | ✅ | ❌ | ❌ Data Block Compression |
7zlib, lz4, lz4hc, zstd
|
7, 8zlib, lz4, lz4hc, zstd
|
7zlib, lz4, lz4hc, zstd
Checksum Verification | ✅ | ❌ | ✅ XML Digital Signature Verification | ❌ | ❌ | ❌

  1. Does not support 64-bit integers
  2. Scalar, Complex, String, and TimePoint only; no 128-bit floating point values
  3. Only mandatory attributes and colorSpace
  4. Int32, Float32, Float64, String, and TimePoint only
  5. Raw strings only; cannot parse values
  6. Missing imageType, offset, orientation, and uuid attributes
  7. zstd support is nonstandard for spec version 1.0, but has been confirmed for an upcoming version of the standard
  8. Sub-blocks not yet supported (this limits supported images to 4GiB)

Dependencies

Road Map