Compare commits

..

4 Commits

Author SHA1 Message Date
tth
8b185f02e2 start of libnetpbm integration 2019-09-12 19:48:12 +02:00
tth
723319ea15 il faut bien un peu de doc pour etre credible 2019-09-12 19:39:14 +02:00
tth
8f2c39ec02 better error message 2019-09-12 19:37:07 +02:00
tth
5726161571 better (?) error messages 2019-09-12 19:33:08 +02:00
7 changed files with 120 additions and 12 deletions

2
.gitignore vendored
View File

@ -21,6 +21,8 @@ doc/*.idx
doc/*.ilg
doc/*.ind
funcs/t
v4l2/t
v4l2/capture
v4l2/grabvidseq

View File

@ -132,9 +132,10 @@ décrits en page \pageref{outils}.
Vous devez, en dehors des outils classiques (bash, gcc, make\dots),
avoir quelques bibliothèques installées\footnote{Les \texttt{-dev}
pour Debain et dérivées}~: libv4l2, libpnglite, libtiff, et
probablement d'autres choses. Être familier avec l'utilisation du
shell\index{shell} sera un plus.
pour Debain et dérivées}~: libv4l2, libpnglite, libtiff, libpnm,
et probablement d'autres choses.
Être familier avec l'utilisation du shell\index{shell} et l'écriture
de Makefile's sera un plus.
\subsection{Compilation}
@ -279,6 +280,19 @@ Cette notion de teinte est assez inconsistante pour le moment,
puisqu'il n'y a que la valeur par defaut : \textbf{0.0} que
l'on peut assimiler à un noir absolu\index{absolu}.
\subsection{png2fimg}\index{png2fimg}\label{png2fimg}
Grosse panne à réparer.
\begin{verbatim}
tth@debian:~/TMP/floatimg$ png2fimg A.png foo.fimg
error in 'fimg_create_from_png' : read png -> -1 File error
png2fimg : err -1, abort.
\end{verbatim}
Il faut envisager le passage à \texttt{libpng}\index{libpng}.
\subsection{fimgstats}\index{fimgstats}\label{fimgstats}
Affichage de quelques valeurs calculées à partir d'un fichier
@ -290,6 +304,9 @@ usage : fimgstats [options] file.fimg
-v increase verbosity
\end{verbatim}
À vrai dire, je ne sais pas encore quelles métriques seront utiles
en première approche.
\subsection{fimgops}\index{fimgops}\label{fimgops}
Operations diverses sur ou entre des images.
@ -308,7 +325,7 @@ options:
-v increase verbosity
\end{verbatim}
Pour l'operateur \texttt{mix}, le paramêtre flottant doit
Pour des operateurs paramétrable (comme \texttt{mix}), le paramêtre flottant doit
être fourni en utilisant l'option \texttt{-k}.
\subsection{fimg2png, fimg2pnm, fimg2tiff}
@ -339,8 +356,10 @@ Il reste plein de choses à faire pour que ce soit vraiment utilisable.
\begin{itemize}
\item Import/export au format \textsc{tiff}\index{tiff}.
\item Remplacer le « fait-maison » par \textsc{libnetpbm}.
\item Remplacer le « fait-maison » par \textsc{libnetpnm}\index{pnm}.
\textsl{[en cours]}.
\item Compléter les traitements mathémathiques (eg le gamma\index{gamma}).
\item Formaliser les codes d'erreur.
\
\end{itemize}

View File

@ -1,8 +1,14 @@
#---------------------------------------------------------------
COPT = -Wall -fpic -g -no-pie -DDEBUG_LEVEL=0
COPT = -Wall -fpic -g -no-pie -DDEBUG_LEVEL=1
DEPS = ../floatimg.h Makefile
OBJS = fimg-png.o fimg-tiff.o misc-plots.o filtrage.o utils.o
OBJS = fimg-png.o fimg-tiff.o misc-plots.o filtrage.o utils.o \
fimg-libpnm.o
#---------------------------------------------------------------
t: t.c $(DEPS) ../libfloatimg.a
gcc $(COPT) $< ../libfloatimg.a -lnetpbm -o $@
#---------------------------------------------------------------
@ -15,6 +21,9 @@ fimg-png.o: fimg-png.c $(DEPS)
fimg-tiff.o: fimg-tiff.c $(DEPS)
gcc $(COPT) -c $<
fimg-libpnm.o: fimg-libpnm.c $(DEPS)
gcc $(COPT) -c $<
misc-plots.o: misc-plots.c $(DEPS)
gcc $(COPT) -c $<

52
funcs/fimg-libpnm.c Normal file
View File

@ -0,0 +1,52 @@
/*
* interface FloatImg <-> libpnm(3)
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pam.h>
#include "../floatimg.h"
extern int verbosity;
/* --------------------------------------------------------------------- */
static void print_struct_pam(struct pam *ppam, char *txt)
{
printf("size %d\n", ppam->size);
printf("format %d\n", ppam->format);
printf("plainformat %d\n", ppam->plainformat);
printf("width & height %d %d\n", ppam->width, ppam->height);
printf("depth %d\n", ppam->depth);
printf("maxval %lu\n", ppam->maxval);
}
/* --------------------------------------------------------------------- */
int fimg_pnm_infos(char *fname)
{
struct pam inpam;
FILE *fp;
#if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( '%s' )\n", __func__, fname);
#endif
if (NULL==(fp=fopen(fname, "r"))) {
perror(fname);
exit(1);
}
pnm_readpaminit(fp, &inpam, sizeof(inpam));
print_struct_pam(&inpam, fname);
fclose(fp);
return 0;
}
/* --------------------------------------------------------------------- */

View File

@ -64,7 +64,8 @@ fprintf(stderr, "%s opened\n", filename);
datasize = png.width * png.height * png.bpp;
if ( 3 != png.bpp ) {
fprintf(stderr, "format %d of '%s' not supported\n",
/* I don't really understand this part of the code */
fprintf(stderr, "bpp format %d of '%s' not supported\n",
png.color_type, filename);
return -21;
}
@ -93,7 +94,7 @@ if (foo) {
foo = png_get_data(&png, datas);
if (PNG_NO_ERROR != foo) {
fprintf(stderr, "error in '%s' : read png -> %d %s\n",
fprintf(stderr, "error in '%s' :\n\tpng_get_data -> %d = %s\n",
__func__, foo, pngerr2str(foo));
return foo;
}

25
funcs/t.c Normal file
View File

@ -0,0 +1,25 @@
/*
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pam.h>
#include "../floatimg.h"
int fimg_pnm_infos(char *);
/* --------------------------------------------------------------------- */
int main(int argc, char *argv[])
{
int foo;
pnm_init(&argc, argv);
foo = fimg_pnm_infos("foo.pnm");
fprintf(stderr, "got %d\n", foo);
return 0;
}
/* --------------------------------------------------------------------- */

View File

@ -31,7 +31,7 @@ if (foo) {
exit(1);
}
fimg_describe(&fimg, "oups");
fimg_describe(&fimg, argv[2]);
foo = fimg_dump_to_file(&fimg, argv[2], 0);
fprintf(stderr, "save as fimg -> %d\n", foo);