Swiftpack.co -  brampf/fitskit as Swift Package
Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
A native iOS library to compute vector / image data of FITS files
.package(url: "https://github.com/brampf/fitskit.git", from: "0.1.0")


MIT License Swift 5.4

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.

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

Getting started

Package Manager

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.

Don't care, just give me a picture, alright?

import FITSKit

let image = try file.prime.decode()

Grayscale Decoder

Applicable on two-dimensional (NAXIS == 2) data units

import FITSKit

let image = try file.prime.decode(GrayscaleDecoder.self, ())

RGB Decoder

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, ())

Bayer Decoder (De-Bayering / Demosaic)

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


Stars: 5
Last commit: 6 weeks ago

Ad: Job Offers

iOS Software Engineer @ Perry Street Software
Perry Street Software is Jack’d and SCRUFF. We are two of the world’s largest gay, bi, trans and queer social dating apps on iOS and Android. Our brands reach more than 20 million members worldwide so members can connect, meet and express themselves on a platform that prioritizes privacy and security. We invest heavily into SwiftUI and using Swift Packages to modularize the codebase.


Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API