Compare commits

..

No commits in common. "c59eedd33c50f0d9fe4cca51b1460282ce63946e" and "98affe4b403005619745ba1a9616a9571e234ef9" have entirely different histories.

8 changed files with 23 additions and 122 deletions

View File

@ -98,23 +98,18 @@ Une représentation approximative d'un monde physique invisible.
L'infinie bio-complexité de notre système oculaire et ses interactions
avec notre multivac neuronal n'est devenue quantifiable qu'avec
l'arrivée des premiers calculateurs
numériques quand certains ont songé à passer du flou mental à la grille
physique.
Les détails techniques sur cette représentation sont en page
\pageref{FloatImg desc}, avec des pointeurs dedans.
Ah, les pointeurs, la pire chose du monde\dots
numériques quand certains ont songé à passer du flou mental à la grille physique.
\subsubsection*{quelques rappels de comment on acquiert et numérise une image}
Avant de se l'approprier, il vaut la rendre réelle dans sa vision intérieur.
Il faut l'imaginer comme des lignes de code interposées entre la grille
physique dont on vient de parler, et une autre grille, bien réelle, des
pixels sur notre écran Trinitron de 44cm.
pixels sur notre écran Trititron\footnote{Sony, u'r the best !} de 44cm.
Et puisque on en parle, je me permet de vous conseiller avec
\textbf{vigueur} la webcam de Playstation (aka PsEye).
Moins de 10 Euros
dans les machin-trocs, et un grain d'image vraiment présent.
dans les trocs, et un grain d'image vraiment présent.
\texttt{https://fr.wikipedia.org/wiki/PlayStation\_Eye}
@ -128,9 +123,9 @@ grains de lumière chromatisés.
\subsubsection*{quelques belles images / schémas polychromes en intro pour
illustrer tout ça}
Tour cela est dans le grand Ternet\footnote{\textsl{Thanks, mister J Postel}}
Tour cela est dans le grand Ternet\footnote{\textsl{bik kudo 2 J Postel}}
mondial, je pourrais même vous donner l'url si vous me promettez de ne pas
la glisser dans le capitalisme de surveillance.
la glissr dans le capitalisme de surveillance.
% ===================================================================
@ -349,12 +344,10 @@ sont décrits par un ensemble
de données (certains appelent ça des \textsl{metadatas}) regroupées
dans une jolie structure que nous allons examiner dès maintenant.
\label{FloatImg desc}
\begin{lstlisting}
/* in memory descriptor */
typedef struct {
unsigned long magic;
int magic;
int width;
int height;
int type;
@ -363,7 +356,7 @@ typedef struct {
float *R, *G, *B, *A;
int reserved;
} FloatImg;
\end{lstlisting}\index{FloatImg desc}
\end{lstlisting}\index{FloatImg}
Le premier champ, \texttt{magic}, servira un de ces jours à
robustifier l'ensemble du machin.
@ -926,16 +919,13 @@ Usage: mkfimg [options] quux.fimg width height
-v increase verbosity
\end{verbatim}
Il y a deux syntaxes possibles pour les dimensions de l'image générée~:
deux nombres séparés ou la notation \texttt{WIDTHxHEIGHT}.
La plupart des types d'image générée prennent un paramètre flottant qui
devra être donné avec l'option \texttt{-k F.F} avec une valeur par défaut
à $1.0$, ce qui n'est pas toujours une bonne valeur.
\begin{description} \index{XXX}
\item [black/gray/grey:] efface avec 0.0 (black) ou avec la valeur
\texttt{-k} (niveau de gris).
\texttt{-k} (gray).
\item [drand48:] beaucoup de bruit dans chacun des canaux.
\item [hdeg/vdeg:] dégradé du noir au blanc (relatif à \texttt{-k}).
\end{description}
@ -1052,10 +1042,8 @@ D'un autre coté, écrire un greffon d'import/export pour
Gimp\index{Gimp} ou ImageMagick\index{ImageMagick} ou Krita\index{krita}
ne devrait pas être trop difficile. Des volontaires ?
D'ailleurs, pourquoi $N$ logiciels indépendants alors q'un
seul devrait être nécessaire ?, ce qui me conduit à envisager
un \textsl{exporter} universel, mais dont l'ergonomie et les
paramètres possibles doivent être réfléchis avec vigueur et nonchalance.
\textsl{D'ailleurs, pourquoi $N$ logiciels indépendants alors q'un
seul devrait être nécessaire ?}
% -------------------------

View File

@ -4,12 +4,11 @@
* http://la.buvette.org/photos/cumul
*/
#define FIMG_VERSION 143
#define FIMG_VERSION 142
/*
* in memory descriptor
*/
#define MAGIC_FIMG 0x00F11F00
typedef struct {
unsigned long magic;
int width;
@ -29,7 +28,6 @@ typedef struct {
int w, h, t;
} FimgFileHead;
#define MAGIC_AREA51 0xA5EA0051
typedef struct {
unsigned long magic;
int w, h;

View File

@ -11,8 +11,7 @@ OBJS = fimg-png.o fimg-tiff.o misc-plots.o filtrage.o utils.o \
geometry.o rotate.o fimg-openexr.o \
equalize.o fimg-fits.o saturation.o histogram.o \
hsv.o classif.o contour2x2.o qsortrgb.o exporter.o \
displacement.o dithering.o plasmas.o incrustator.o \
recurse.o
displacement.o dithering.o plasmas.o incrustator.o
#---------------------------------------------------------------
@ -36,9 +35,6 @@ tests.o: tests.c tests.h $(DEPS)
# ###
recurse.o: recurse.c $(DEPS)
gcc $(COPT) -c $<
incrustator.o: incrustator.c $(DEPS)
gcc $(COPT) -c $<

View File

@ -1,26 +0,0 @@
/*
RECURSION 'QUADTREE' SUR LES IMAGES
-----------------------------------
*/
#include <stdio.h>
#include <math.h>
#include "../floatimg.h"
/* -------------------------------------------------------------------- */
/* may be we need some private variables ? */
/* -------------------------------------------------------------------- */
/* nouveau 29 avril 2021, pendant un autre masque-flamme coronavidique */
int fimg_recursion_proto(FloatImg *src, FloatImg *dst, int notused)
{
#if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( %p %p %d )\n", __func__, src, dst, notused);
#endif
return -1;
}
/* -------------------------------------------------------------------- */
/* -------------------------------------------------------------------- */

View File

@ -16,41 +16,6 @@
extern int verbosity;
/* --------------------------------------------------------------------- */
int fimg_recursion_proto(FloatImg *src, FloatImg *dst, int notused);
int essai_recursion(char *inf, char *outf, int flags)
{
int foo;
FloatImg src, dst;
fprintf(stderr, ">>> %s ( '%s' '%s' 0x%04X )\n", __func__,
inf, outf, flags);
foo = fimg_create_from_dump(inf, &src);
if (0 != foo) {
fprintf(stderr, "%s: err %d loading image '%s'\n", __func__,
foo, inf);
return foo;
}
fimg_clone(&src, &dst, 0);
foo = fimg_recursion_proto(&src, &dst, flags);
if (foo) {
fprintf(stderr, "%s: fail %d\n", __func__, foo);
return foo;
}
foo = fimg_export_picture(&dst, outf, 0);
if (foo) {
fprintf(stderr, "%s : err %d saving result\n", __func__, foo);
return foo;
}
return -1;
}
/* --------------------------------------------------------------------- */
int essai_miroir(char *inf, char *outf, int flags)
{
@ -82,7 +47,7 @@ if (foo) {
return foo;
}
return 0;
return -1;
}
/* --------------------------------------------------------------------- */
/* nouveau 21 mars 2021 - rue d'Aragon */

View File

@ -169,7 +169,6 @@ if (1 != argc-optind) {
foo = convertir_fimg_en_machinable(argv[optind], "-", steps, norm_val);
if (foo) {
fprintf(stderr, "%s : got a %d from convertor\n", argv[0], foo);
return 1;
}
return 0;

View File

@ -165,13 +165,6 @@ if (foo) {
* we can now create the resultant image, and going coredump...
*/
foo = fimg_create(&dest, srcA.width, srcA.height, srcA.type);
if (foo) {
fprintf(stderr, "%s: crash coredump on create fimg\n", argv[0]);
#if MUST_ABORT
abort();
#endif
exit(1);
}
// fimg_describe(&dest, "destination");
foo = exec_operator(&srcA, &srcB, action, &dest);

View File

@ -63,7 +63,7 @@ int foo;
puts("Usage:\tmkfimg [options] quux.fimg width height");
puts("\t-k N.N\tgive a float parameter");
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=0; types[foo].code; foo++) {
printf("%s ", types[foo].name);
}
@ -79,7 +79,7 @@ exit(0);
/* --------------------------------------------------------------------- */
int main(int argc, char *argv[])
{
int foo, opt, nbargs;
int foo, opt;
int width, height;
char *fname;
float fvalue = 1.0;
@ -103,33 +103,21 @@ for (foo=0; foo<argc; foo++)
fprintf(stderr, "%3d %s\n", foo, argv[foo]);
#endif
if (3 != argc-optind) {
fprintf(stderr, "%s need filename, width & height\n", argv[0]);
exit(1);
}
if (type < 0) {
fprintf(stderr, "type '%s' is unknow\n", tname);
exit(2);
}
nbargs = argc-optind;
switch (nbargs) {
case 2:
if (2!=parse_WxH(argv[optind+1], &width, &height)) {
fprintf(stderr, "%s: parse error on '%s'\n",
argv[0], argv[optind+1]);
exit(1);
}
break;
case 3:
width = atoi(argv[optind+1]);
height = atoi(argv[optind+2]);
break;
default:
fprintf(stderr, "%s need filename, width & height\n", argv[0]);
exit(1);
}
fname = argv[optind];
width = atoi(argv[optind+1]); height = atoi(argv[optind+2]);
if (verbosity>1) fprintf(stderr, "*** mkfimg *** %s %s\n", __DATE__, __TIME__);
if (verbosity) fprintf(stderr, "making '%s' %dx%d, type %d\n",
if (verbosity) fprintf(stderr, "making '%s' %d x %d, type %d\n",
fname, width, height, type);
srand48(getpid() ^ time(NULL));