Example (Source code of the working demo)
import { Fits , Hdu } from "@hscmap/fits"
const sampleFitsURL = require < string > ( 'file-loader!./sample.fits' )
window . addEventListener ( 'load' , async e => {
const fits = await Fits . fetch ( sampleFitsURL , [
{ outputDataType : Fits . DataType . uint8 } ,
{ outputDataType : Fits . DataType . uint8 } ,
] )
for ( const hdu of fits ) {
showHdu ( hdu )
}
} )
function showHdu ( hdu : Hdu ) {
const width = hdu . card ( 'NAXIS1' , 'number' )
const height = hdu . card ( 'NAXIS2' , 'number' )
const canvas = document . createElement ( 'canvas' )
const ctx = canvas . getContext ( '2d' ) !
canvas . width = width
canvas . height = height
const imagedata = ctx . createImageData ( width , height )
hdu . uint8array ( array => {
for ( let y = 0 ; y < height ; ++ y ) {
for ( let x = 0 ; x < width ; ++ x ) {
const i = y * width + x
const j = ( height - y ) * width + x
const value = array [ i ]
imagedata . data [ 4 * j ] = value
imagedata . data [ 4 * j + 1 ] = value
imagedata . data [ 4 * j + 2 ] = value
imagedata . data [ 4 * j + 3 ] = 255
}
}
} )
ctx . putImageData ( imagedata , 0 , 0 )
document . body . appendChild ( canvas )
const pre = document . createElement ( 'pre' )
pre . innerText = JSON . stringify ( hdu . header , undefined , 2 )
document . body . appendChild ( pre )
document . body . appendChild ( document . createElement ( 'hr' ) )
}