Сравнить коммиты

...

3 Коммитов

Автор SHA1 Сообщение Дата
tTh
d23a35849a trying a new effect 2023-07-16 12:39:49 +02:00
tTh
82ffe1c2cc bla du dimanche soir 2023-07-10 02:26:57 +02:00
tTh
0a482a7316 fixed 2023-07-08 13:10:47 +02:00
9 изменённых файлов: 70 добавлений и 22 удалений

Просмотреть файл

@ -3,7 +3,7 @@
Avec toutes ces fonctions disponibles et `grabvidseq`, nous
savons faire des images **floues**. L'étape suivante, les plus
pervers d'entre vous le savent déja, est celle de la création
de **films flous** dans le domaine spacio-temporel.
de **films flous** dans le domaine spatio-temporel.
À l'heure actuelle, il y a plusieurs programmes distincts. Le premier
(fonderie) fait une moyenne mobile sur N images consécutives,

Просмотреть файл

@ -21,6 +21,38 @@
*/
extern int verbosity;
/* -------------------------------------------------------------- */
/*
* nouveau Sun Jul 16 07:37:22 UTC 2023
*/
int poke_sup_rb_g(FloatImg *src, FloatImg *dst)
{
int idx, nbpix, foo;
#if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( %p %p )\n", __func__, src, dst);
#endif
if ( (foo=fimg_images_not_compatible(src, dst)) )
{
fprintf(stderr, "%s: no compat %d\n", __func__, foo);
return foo;
}
nbpix = src->width * src->height;
fprintf(stderr, "%s work on %d pixels\n", __func__, nbpix);
for (idx=0; idx<nbpix; idx++) {
dst->R[idx] = src->R[idx];
dst->B[idx] = src->B[idx];
if (dst->R[idx] > dst->B[idx])
dst->G[idx] = dst->R[idx];
else
dst->G[idx] = dst->B[idx];
}
return 0;
}
/* -------------------------------------------------------------- */
/* nouveau 14 mai 2022 rue Ernest Renan */

Просмотреть файл

@ -7,6 +7,7 @@ int graylevel2popcolors(FloatImg *src, FloatImg *dst, int k);
int incrustation_vignette(FloatImg *src, FloatImg *dst, int k);
int poke_sup_rb_g(FloatImg *src, FloatImg *dst);
int trinitron(FloatImg *pimg, int notused);

Просмотреть файл

@ -40,7 +40,7 @@ double debut, fin;
foo = fimg_create_from_dump(fIname, &image);
if (foo) {
fprintf(stderr, "err %d create image\n", foo);
fprintf(stderr, "%s: err %d create from dump\n", __func__, foo);
exit(1);
}
@ -73,8 +73,6 @@ return 0;
foo = essayer_single("capture/???42.fimg", "/tmp/x8/", STK);
fprintf(stderr, "essayer single -> %d\n", foo);
*/
int essayer_single(char *globpattern, char *destdir, int chain)
{
@ -161,14 +159,14 @@ puts("\t-s\tdo single test");
exit(0);
}
/* ----------------------------------------------------------- */
int experiment(void)
int experiment(char *fname)
{
int foo;
FloatImg image, dest;
fprintf(stderr, "--------- EXPERIMENT ------------\n");
fprintf(stderr, "----- EXPERIMENT on '%s' -----\n", fname);
foo = fimg_create_from_dump("mire.fimg", &image);
foo = fimg_create_from_dump(fname, &image);
if (foo) {
fprintf(stderr, "%s: err %d on create_from_dump\n",
__func__, foo);
@ -177,8 +175,8 @@ if (foo) {
foo = fimg_clone(&image, &dest, 0);
foo = graylevel2popcolors(&image, &dest, 0);
fprintf(stderr, "POP COLOR- -> %d\n", foo);
foo = poke_sup_rb_g(&image, &dest);
fprintf(stderr, "poke sup rb g --> %d\n", foo);
fimg_export_picture(&dest, "foo.png", 0);
@ -230,7 +228,7 @@ if (foo) {
}
if (do_xper) {
experiment();
experiment(infile);
return 0;
}
if (do_single) {

Просмотреть файл

@ -53,6 +53,8 @@
\section*{Une image flottante ?}
\textsl{Back in a far past part of history.}
\textsl{Mais de quoi parle-t-on exactement ?}
% XXX XXX XXX\vspace{1em}
@ -79,7 +81,12 @@ IRC de \textsl{libera.chat}.
\textbf{Attention !} ce document commence par une bonne rafale
de technique parfois \textsl{hardue}\footnote{hard + ardue = private
joke Usenet}, avec des pointeurs dedans.
joke Usenet}, avec des pointeurs dedans, mais vous êtes déja
au courant.
Le pointeur, c'est bien, c'est comme le doigt sur les écrans
de zombiephones, ça sert juste à dire «~C'est là !~», c'est
donc gravement utile, mais parfois, le doigt glisse.
Et là, tout peut arriver.
Vous avez parfaitement le droit de sauter directement à
la page \pageref{outils} pour quelque chose de plus concret.
@ -510,7 +517,7 @@ Si la valeur retournée est différente de 0, c'est que quelque
chose s'est probablement mal passé.
Certains messages sont parfois explicites. Mais parfois non.
Quand aux valeurs retournées en cas d'erreur, c'est le désordre
intégral.
intégral\footnote{Un vrai désastre, même...}.
% _________
@ -1396,7 +1403,7 @@ le premier pouvant salement brotcher une image, et le second capable de
mélanger harmonieusement deux images, la balance est équilibrée.
Il s'agit donc d'un petit programme écrit en Bash\index{bash}, un langage
dont la connaissance est, pour moi, indispendable à qui veut faire des
dont la connaissance est, pour moi, indispensable à qui veut faire des
images kitchies\index{kitchy}. Mais ne vous inquiétez pas, c'est en
fait assez simple à comprendre. Et comprendre, c'est apprendre.
@ -1625,10 +1632,12 @@ devez mettre ce bout de XML\index{XML} dans le fichier
\end{lstlisting}
C'est juste un hack rapide, qui ne fonctionne pas très bien avec
d'autres commande de IM, comme identify, qui a tendance à
d'autres commande de IM, comme \texttt{identify}\index{identify},
qui a tendance à
raconter un peu n'importe quoi, puisqu'elle se base sur le
résultat de la conversion.
Je compte donc sur le bouquin de \textsl{Brunus} pour avancer\dots
Je compte donc sur le bouquin de \textsl{Brunus}\index{Brunus}
pour avancer\dots
\subsection{Gimp}\index{Gimp}
@ -1662,7 +1671,7 @@ Bon courage pour toutes les explorer, voire même juste les comprendre.
Il y a d'autres logiciels pour lesquels écrire une fonction d'importation
serait bien~: \textsl{Geeqie}, un visualiseur d'image fort pratique, ou
\textsl{Krita} qui semble avoir les faveurs de
dessinateurs de talent\footnote{Oui, David, c'est à toi que je pense.}.
dessinateurs de talent.
Ce qui nous conduit à une question importante~: quels sont les logiciels
qui gèrent le chargement d'image par un système de
\textsl{plugin}\index{plugin},

13
essai.c
Просмотреть файл

@ -18,6 +18,8 @@ int verbosity;
void fait_un_dessin(FloatImg *dessin)
{
// fprintf(stderr, "je dessine dans %p\n", dessin);
fimg_draw_something(dessin);
}
@ -26,6 +28,7 @@ void help(void)
{
puts("Options :");
puts("\t-d WxH\timage size");
puts("\t-v\tincrease verbosity");
exit(0);
}
/* --------------------------------------------------------------------- */
@ -57,19 +60,19 @@ fimg_drand48(&fimgB, 100.0);
foo = fimg_dump_to_file(&fimgB, "B.fimg", 0);
fimg_timer_set(0);
#define NBP 500
#define NBP 5
for (foo=0; foo<NBP; foo++) {
if (verbosity) {
printf("%5d / %5d\n", foo, NBP);
printf("%5d / %5d\n", foo, NBP);
}
fait_un_dessin(&fimgB);
fimg_add_3(&fimgA, &fimgB, &fimgA);
// fimg_mul(&fimgA, &fimgB, &fimgA);
}
tb = fimg_timer_get(0);
fprintf(stderr, "%s = %f seconds\n", __func__, tb);
foo = fimg_save_as_pnm(&fimgA, "drand48.pnm", 0);
foo = fimg_dump_to_file(&fimgA, "drand48.fimg", 0);
fprintf(stderr, "%s = %.2f seconds, %.2f s/p\n", __func__, tb, tb/(double)NBP);
foo = fimg_save_as_pnm(&fimgA, "out.pnm", 0);
foo = fimg_dump_to_file(&fimgA, "out.fimg", 0);
fimg_destroy(&fimgA);
fimg_destroy(&fimgB);

Просмотреть файл

@ -110,6 +110,9 @@ for (y=0; y<hd; y++) {
return 0;
}
/* --------------------------------------------------------------------- */
/*
* this function can be optimized with direct pixel copy
*/
int fimg_extractor(FloatImg *in, FloatImg *out, FimgArea51 *rect)
{
int xs, ys, xd, yd;

Просмотреть файл

@ -19,7 +19,7 @@ do
# only take the good spot
fimg=$(printf "%s/%05d.fimg" ${OUTD} ${idx})
${EXTR} -o ${fimg} ${TMPG} 800,600,560,240 ${fimg}
${EXTR} -o ${fimg} ${TMPG} 800,600,560,240
# display ${fimg} ; exit

Просмотреть файл

@ -18,7 +18,9 @@ int extractor(char *srcname, char *dstname, FimgArea51 *rect)
FloatImg src, dst;
int foo;
#if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( %s %s %p )\n", __func__, srcname, dstname, rect);
#endif
if (verbosity) {
print_rectangle((char *)__func__, rect);