use std::fs::File;
use fits_well::{CompressOptions, FitsReader, FitsWriter, Image, ImageData, Scaling};
fn main() -> fits_well::Result<()> {
let path = std::env::temp_dir().join("fits_well_compressed.fits");
let image = Image {
shape: vec![16, 16],
samples: ImageData::I16((0..256).map(|i| (i % 32) as i16).collect()),
scaling: Scaling {
bscale: 1.0,
bzero: 0.0,
blank: None,
},
};
let options = CompressOptions::tiled([8, 8]);
let mut writer = FitsWriter::new(File::create(&path)?);
writer.write_compressed_image(&image, "RICE_1", &options)?;
writer.into_inner().sync_all()?;
println!("wrote {}", path.display());
let mut reader = FitsReader::open(File::open(&path)?)?;
let images = reader.image_indices();
println!("image HDUs: {images:?}"); let restored = reader.read_image(images[0])?;
println!(
"restored {:?}, lossless = {}",
restored.shape,
restored.decode() == image.samples
);
Ok(())
}