add a crude FITS exporter

This commit is contained in:
tth 2021-04-03 10:46:00 +02:00
parent e81be7b0ca
commit 327cadd03a
4 changed files with 73 additions and 2 deletions

1
.gitignore vendored
View File

@ -52,6 +52,7 @@ v4l2/nc-camcontrol
tools/fimg2png
tools/fimg2pnm
tools/fimg2tiff
tools/fimg2fits
tools/fimg2text
tools/fimgstats
tools/mkfimg

View File

@ -4,7 +4,7 @@
* http://la.buvette.org/photos/cumul
*/
#define FIMG_VERSION 130
#define FIMG_VERSION 131
/*
* in memory descriptor
@ -174,6 +174,7 @@ int fimg_create_from_dump(char *fname, FloatImg *head);
int fimg_save_R_as_fits(FloatImg *src, char *outname, int flags);
int fimg_save_G_as_fits(FloatImg *src, char *outname, int flags);
int fimg_save_B_as_fits(FloatImg *src, char *outname, int flags);
int fimg_save_plane_as_fits(FloatImg *src, char *oname, char plane, int flags);
int fimg_write_as_tiff(FloatImg *src, char *fname, int flags);
int fimg_save_as_exr(FloatImg *src, char *outname, int flags);

View File

@ -9,7 +9,7 @@ DEPS = ../floatimg.h ../libfloatimg.a Makefile
# ----------
all: fimg2pnm mkfimg png2fimg fimgstats fimg2png \
fimg2tiff fimg2text \
fimg2tiff fimg2text fimg2fits \
addpnm2fimg cumulfimgs fimgops fimgfx
fimgstats: fimgstats.c $(DEPS)
@ -30,6 +30,9 @@ fimgfx: fimgfx.c $(DEPS)
fimg2pnm: fimg2pnm.c $(DEPS)
gcc $(COPT) $< ../libfloatimg.a -o $@
fimg2fits: fimg2fits.c $(DEPS)
gcc $(COPT) $< ../libfloatimg.a -lcfitsio -o $@
fimg2png: fimg2png.c $(DEPS)
gcc $(COPT) $< ../libfloatimg.a -lpnglite -lz -o $@

66
tools/fimg2fits.c Normal file
View File

@ -0,0 +1,66 @@
/*
* exporting a floatimg to a FITS file
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "../floatimg.h"
int verbosity;
/* ----------------------------------------------------------------- */
int export_fimg_plane_as_fits(char *infile, char *outfile, char plane)
{
FloatImg fimg;
int foo;
foo = fimg_create_from_dump(infile, &fimg);
if (foo) {
fprintf(stderr, "%s: create fimg from '%s' -> %d\n", __func__,
infile, foo);
return -1;
}
foo = fimg_save_plane_as_fits(&fimg, outfile, plane, 0);
if (foo) {
fprintf(stderr, "%s: err %d on fits export\n", __func__, foo);
return foo;
}
fimg_destroy(&fimg);
return -1;
}
/* ----------------------------------------------------------------- */
static void help(int k)
{
puts("export to FITS format");
puts("\t-p select colorplane : R, G, B");
}
/* ----------------------------------------------------------------- */
int main(int argc, char *argv[])
{
int foo, opt;
int plane = '?';
while ((opt = getopt(argc, argv, "p:hv")) != -1) {
switch(opt) {
case 'p': plane = optarg[0]; break;
case 'v': verbosity++; break;
case 'h': help(1); exit(1);
}
}
if (2 != argc-optind) {
fprintf(stderr, "error: %s need two filenames\n", argv[0]);
exit(1);
}
export_fimg_plane_as_fits(argv[optind], argv[optind+1], plane);
return 0;
}
/* ----------------------------------------------------------------- */