A native Swift library to read and write FITS files
FITSKit is a pure Swift library to process the image data of FITS 4.0 file files, commonly used to store astronomical data.
The aim is to implement a modern, native Swift library to utilize the full computing power of modern apple hardware. In particuary, I was seeking for a simple solution to read, render & review FITS files on an iPad.
FITSKit is a highly plattform depenedend library. It compiles and runs exclusively on iOS / iPadOS / macCatalyst. It utilizes apples standard libraries Core Image and Accelerate to process, render & manipulate image data stored in FITS files. It is meant as an addition to the general FITS file format library FitsCore.
![]() |
![]() |
![]() |
---|---|---|
FITSCore | FITSKit | FITSTool |
Fits file format read & write | Image rendering & manipulation | Command line tool |
macOS, iOS & Linux | iOS / macCatalyst | Linux |
- Read & Write FITS 4.0 files
- Image format conversion using Accelerate
- [x| BITPIX 8 support
- BITPIX 16 support
- BITPIX 32 support
- BITPIX 64 support
- BITPIX -32 support
- BITPIX -64 support
- Native code
- Swift 5.4
- Compiles for macCatalyst
- Compiles for iPadOS / iOS
With the swift package manager, add the library to your dependencies
dependencies: [
.package(url: "https://github.com/brampf/fitskit.git", from: "0.1.0")
]
then simply add the FITSKit
import to your target
.target(name: "YourApp", dependencies: ["FITSKit"])
There are several decoders to decode the raw image data of an FITS DataUnit
into either an CGImage
or into an vImage_Buffer
- GrayscaleDecoder : Renders grayscale images from two-dimensional data
- RGBDecoder : Renders RGB images from tree-dimensional data
- BayerDecoder : Renders RGB images from two-dimensional data
Please note: Decoders only translate the raw byte patterns into processable images and does not apply color correction of any kind.
import FITSKit
let image = try file.prime.decode()
Applicable on two-dimensional (NAXIS == 2) data units
import FITSKit
let image = try file.prime.decode(GrayscaleDecoder.self, ())
Applicable on three-dimensional (NAXIS == 3) data units
import FITSKit
let image = try file.prime.decode(RGB_Decoder<RGB>.self, ())
}
The RGB Decoder allows parametrization of the output and can also decode grayscale images
import FITSKit
let image = try file.prime.decode(RGB_Decoder<Mono>.self, ())
}
Applicable on two-dimensional (NAXIS == 2) data units
import FITSKit
let image = try file.prime.decode(BayerDecoder.self, .RGGB)
}
MIT license; see LICENSE. (c) 2021