Skip to content
/ xisf Public

Reader (eventually writer) for the XISF astronomy image file format

License

Notifications You must be signed in to change notification settings

wrenby/xisf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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/Apache GPLv3 BSD-4-Clause-like
Monolithic Files Read Read + Write Read + Write
Distributed Files
Read (Partial)http, https, ftp, see road map
N-D Images
Pixel Sample Formats Scalar, Complex Agnostic (Raw Bytes Only) Scalar1, Complex
Image Metadata
Everything Attributes, XISF Properties, FITS Keywords, ICC Profile, RGB Working Space, Display Function, CFA, Resolution, Thumbnail
Basic Attributes2, XISF Properties3, FITS Keywords4, ICC Profile, CFA, Thumbnail
Nearly Everything Attributes5, XISF Properties6, 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
7  zlib, lz4, lz4hc, zstd
7, 8zlib, lz4, lz4hc, zstd
7  zlib, lz4, lz4hc, zstd
Checksum Verification
XML Digital Signature Verification
Footnotes
  1. Does not support 64-bit integer pixel samples
  2. Only mandatory attributes and colorSpace
  3. Int32, Float32, Float64, String, and TimePoint only
  4. Raw strings only; cannot parse values
  5. Missing imageType, offset, orientation, and uuid attributes
  6. No 128-bit integer or floating point values
  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

  • Minimum Supported Rust Version (MSRV): 1.67.0, verified for x86_64-unknown-linux-gnu
  • libxml2 (MIT)
  • lz4 (BSD-2-Clause)
  • zstd (BSD-3-Clause)
  • Can be configured to use zlib (Zlib) or zlib-ng (Zlib)
  • gcc quadmath (LGPL v2.1) when the f128 feature is enabled
    • quadmath doesn't support every CPU architecture, so 128-bit floating point properties are limited to those architectures
  • Test suite requires a Docker installation when the remote-ftp feature is enabled

Road Map

  • Read N-dimensional images
  • Data block compression
  • Checksum verification
  • Images of complex numbers
  • <Reference> element
  • <FITSKeyword> element
  • Image thumbnails
  • Remote resources
    • Ask user for trust before connecting
    • Caching
      • Files with a checksum are read through twice, and right now that means the file gets downloaded twice
    • Authorization/Credentials Store
      • Stateful schemes like FTP require keeping track of sessions
    • XISB files
    • SFTP/SCP
  • Non-<Property> image metadata
  • Scalar, Complex, String, and TimePoint <Property> elements
  • Vector, Matrix <Property> elements
  • 128-bit floating point <Property> types
  • Write monolithic files
  • <Table> element
  • Property format strings
  • Write distributed files
  • Color space conversion?
  • XML Digital Signature verification
  • async data block read functions
  • C/C++11 interface with cbindgen

About

Reader (eventually writer) for the XISF astronomy image file format

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages