one more step on the metadata road
This commit is contained in:
@@ -13,8 +13,12 @@ DEPS = ../floatimg.h ../libfloatimg.a Makefile
|
||||
all: fimg2pnm mkfimg png2fimg fimgstats fimg2png \
|
||||
fimg2tiff fimg2text fimg2fits \
|
||||
addpnm2fimg cumulfimgs fimgops fimgfx \
|
||||
fimgmetadata \
|
||||
fimghalfsize
|
||||
|
||||
fimgmetadata: fimgmetadata.c $(DEPS)
|
||||
gcc $(COPT) $< ../libfloatimg.a -lm -o $@
|
||||
|
||||
fimgstats: fimgstats.c $(DEPS)
|
||||
gcc $(COPT) $< ../libfloatimg.a -lm -o $@
|
||||
|
||||
|
||||
@@ -10,7 +10,17 @@ Génération d'une image flottante avec des choses dedans.
|
||||
Un [../scripts/demo-mkfimg.sh](script) permet de créer toutes
|
||||
les images disponibles.
|
||||
|
||||
L'option `-m` rajoute des méta-données, cette option
|
||||
**ne** doit **pas** encore être utilisée dans la vrai vie.
|
||||
|
||||
## fimgops
|
||||
```
|
||||
usage:
|
||||
fimgops [options] A.fimg B.fimg operator D.fimg
|
||||
options:
|
||||
-k N.N set float value (def=0.500)
|
||||
-v increase verbosity
|
||||
```
|
||||
|
||||
## fimgfx
|
||||
|
||||
@@ -22,7 +32,7 @@ effects:
|
||||
|
||||
Compute some useless numbers...
|
||||
|
||||
## fimg2pnm - fimg2png - fimg2tiff
|
||||
## fimg2pnm - fimg2png - fimg2tiff - fimg2fips
|
||||
|
||||
Exportation d'image flottante vers divers formats. Certains d'entre eux
|
||||
ne sont gérés que de façon très rudimentaire.
|
||||
@@ -32,3 +42,6 @@ ne sont gérés que de façon très rudimentaire.
|
||||
Nouveau de l'année 2020+1 : exfiltrer toutes des données d'une image flottante
|
||||
afin de les rendre machinables.
|
||||
|
||||
## fimgmetadata
|
||||
|
||||
Nouveau avril 2022. Need more doc...
|
||||
|
||||
69
tools/fimgmetadata.c
Normal file
69
tools/fimgmetadata.c
Normal file
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
* FIMG METADATA TOOL
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "../floatimg.h"
|
||||
|
||||
int verbosity;
|
||||
|
||||
/* --------------------------------------------------------------------- */
|
||||
int get_print_metadata(char *fname, char *command)
|
||||
{
|
||||
int foo;
|
||||
FimgMetaData metadata;
|
||||
|
||||
// #if DEBUG_LEVEL
|
||||
fprintf(stderr, ">>> %s ( '%s' %s )\n", __func__, fname, command);
|
||||
// #endif
|
||||
|
||||
foo = fimg_get_metadata_from_file(fname, &metadata);
|
||||
if (foo) return foo;
|
||||
|
||||
/* switch on command here, please */
|
||||
|
||||
fimg_show_metadata(&metadata, fname, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
/* --------------------------------------------------------------------- */
|
||||
void help(void)
|
||||
{
|
||||
fprintf(stderr, "*** fimgmetadata (%s, %s)\n", __DATE__, __TIME__);
|
||||
fimg_print_version(1);
|
||||
exit(0);
|
||||
}
|
||||
/* --------------------------------------------------------------------- */
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int foo, opt, nbargs;
|
||||
char *fname;
|
||||
|
||||
while ((opt = getopt(argc, argv, "hv")) != -1) {
|
||||
switch(opt) {
|
||||
case 'h': help(); break;
|
||||
case 'v': verbosity++; break;
|
||||
}
|
||||
}
|
||||
|
||||
nbargs = argc - optind;
|
||||
// fprintf(stderr, "nbargs = %d\n", nbargs);
|
||||
if (2 != nbargs) {
|
||||
fprintf(stderr, "%s need two args: command & filename\n", argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
foo = get_print_metadata(argv[optind], argv[optind+1]);
|
||||
if (foo) fprintf(stderr, "got a %d from job\n", foo);
|
||||
|
||||
return 0;
|
||||
}
|
||||
/* --------------------------------------------------------------------- */
|
||||
|
||||
@@ -68,7 +68,7 @@ for (type = types; type->code; type++) {
|
||||
exit(0);
|
||||
}
|
||||
/* --------------------------------------------------------------------- */
|
||||
static void help(int lj)
|
||||
static void help(void)
|
||||
{
|
||||
int foo, cc;
|
||||
|
||||
@@ -76,11 +76,11 @@ puts("Usage:\tmkfimg [options] quux.fimg width height");
|
||||
|
||||
puts("\t-k N.N\tgive a float parameter");
|
||||
puts("\t-L\tlist howto make a pic");
|
||||
fputs("\t-t bla\thowto make the pic :\n\t\t| ", stdout);
|
||||
fputs("\t-t bla\thowto make the pic :\n\t\t | ", stdout);
|
||||
|
||||
for (foo=cc=0; types[foo].code; foo++) {
|
||||
cc += printf("%s ", types[foo].name);
|
||||
if (cc>42) { cc=0; printf("\n\t\t| "); }
|
||||
if (cc>35) { cc=0; printf("\n\t\t | "); }
|
||||
}
|
||||
|
||||
puts("\n\t-v\tincrease verbosity");
|
||||
@@ -100,14 +100,17 @@ int width, height;
|
||||
char *fname;
|
||||
float fvalue = 1.0;
|
||||
int type = T_BLACK;
|
||||
int wrmdata = 0;
|
||||
char *tname = "wtf?";
|
||||
|
||||
FloatImg fimg;
|
||||
FimgMetaData metadata;
|
||||
|
||||
while ((opt = getopt(argc, argv, "hk:Lt:v")) != -1) {
|
||||
while ((opt = getopt(argc, argv, "hk:Lmt:v")) != -1) {
|
||||
switch(opt) {
|
||||
case 'h': help(0); break;
|
||||
case 'h': help(); break;
|
||||
case 'k': fvalue = atof(optarg); break;
|
||||
case 'm': wrmdata = 1; break;
|
||||
case 't': type = get_type_by_name(tname=optarg);
|
||||
break;
|
||||
case 'L': list_types(); break;
|
||||
@@ -147,8 +150,8 @@ switch (nbargs) {
|
||||
|
||||
fname = argv[optind];
|
||||
|
||||
if (verbosity>1) fprintf(stderr, "*** mkfimg *** %s %s\n",
|
||||
__DATE__, __TIME__);
|
||||
if (verbosity>1) fprintf(stderr, "*** mkfimg *** %s %s *** pid %ld\n",
|
||||
__DATE__, __TIME__, (long)getpid());
|
||||
if (verbosity) fprintf(stderr, "making '%s' %dx%d, type %d\n",
|
||||
fname, width, height, type);
|
||||
|
||||
@@ -174,7 +177,18 @@ switch(type) {
|
||||
case -1: exit(1);
|
||||
}
|
||||
|
||||
foo = fimg_dump_to_file(&fimg, fname, 0);
|
||||
if (wrmdata) {
|
||||
fprintf(stderr, "%s: warning, metadata is bogus\n", argv[0]);
|
||||
(void)fimg_default_metadata(&metadata);
|
||||
sprintf(metadata.idcam, "mkfimg (libv %d)", FIMG_VERSION);
|
||||
foo = fimg_dumpmd_to_file(&fimg, fname, &metadata, 0);
|
||||
#if DEBUG_LEVEL
|
||||
fprintf(stderr, "save w. metadata -> %d\n", foo);
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
foo = fimg_dump_to_file(&fimg, fname, 0);
|
||||
}
|
||||
if (foo) {
|
||||
fprintf(stderr, "dump fimg to %s -> %d\n", fname, foo);
|
||||
exit(1);
|
||||
|
||||
Reference in New Issue
Block a user