libtthimage/Doc/img-effets.html
2022-06-26 02:23:53 +02:00

203 lines
7.2 KiB
HTML

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>libimage: la doc des effets !</title>
<link rel="stylesheet" type="text/css" href="libimage.css">
<meta name="generator" content="Vim et huile de phalange">
<meta name="keywords" content="libimage, tontonth, effects, Targa">
</head>
<body>
<a name="top"><h1>libimage / effets</h1></a>
<p align=center>
<tt>dernière mise à jour: 14 décembre 2013</tt><br>
</p>
<p class="menuhaut">
[<a href="libimage.html#primitives">primitives</a>]
[<a href="#effets">effets</a>]
[effets <a href="#effets2">2</a> &amp; <a href="#effets3">3</a>]<br>
[<a href="#rgbmask">rgbmask</a>]
[<a href="#colorize">colorize</a>]
[<a href="#essais">essais</a>]
[<a href="#liens">liens</a>]
</p>
<p>
Cette page décrit les &quot;effets spéciaux&quot; que l'on peut appliquer
sur une image graçe à la <a href="libimage.html">libimage</a>.
Et je suis bien d'accord, il manque des exemples. Vous pouvez en
générer rapidement quelque-uns, en faisant appel à une
<a href="img-essais.html">fonction de test</a>. Ou plus simplement
en utilisant
<a href="http://la.buvette.org/devel/libimage/img-outils.html#effects">l'outil</a>
approprié.
</p>
<h2><a name="effets">effets</a></h2>
<dl class="proto">
<dt>int Image_water(Image_Desc *source, Image_Desc *but, int intensite)</b>
<dd>déplace randomatiquement les pixels comme si de l'eau était tombé
sur une aquarelle. Attention, il semble y avoir un <i>bug</i> dans
cette fonction.
<dt>int Image_noise(Image_Desc *source, Image_Desc *but, int intensite)</b>
<dd>Rajoute du bruit aléatoire absolu dans une image. Une intensité de 10
donne un effet moyen. Chaque composante est traitée séparément.
<dt>int Image_mirror(Image_Desc *src, Image_Desc *dst, int res)</b>
<dd>retourne une image rgb[a] de droite à gauche, comme dans un miroir.
<dt>int Image_upside_down(Image_Desc *src, Image_Desc *dst, int res)</b>
<dd>Renverse une image de haut en bas ou de droite à gauche. Il ne faut pas
mettre la même image en source et destination.
<dt>int Image_swap_lines(Image_Desc *src, Image_Desc * dst)<br>
int Image_swap_cols(Image_Desc *src, Image_Desc * dst)</b>
<dd>Echange des lignes (colonnes) paires et impaires de l'image.
RGB uniquement hélas...
</dl>
<p class="HDP"><a href="#top">haut de page</a></p>
<h2><a name="effets2">effets 2</a></h2>
<dl class="proto">
<dt>int Image_sinwave_1(Image_Desc *source, Image_Desc * but, double table[6])</b>
<dd>Déformation étrange d'une image. Je ne sais absolument pas ce que doit
contenir la table.
<dt>int Image_sinwave_2(Image_Desc *source, Image_Desc * but, double table[6])</b>
<dd>Déformation étrange d'une image. Je ne sais absolument pas ce que doit
contenir la table.
</dl>
<p class="HDP"><a href="#top">haut de page</a></p>
<h2><a name="effets3">effets 3</a></h2>
<p>Dans cette section, il y a des effets plus ou moins pas trop finis.
Certains d'entre eux ont été conçus pour mon (futur) logiciel de montage
de vidéos <a href="http://tontonth.free.fr/videos/">povesques</a>.
Ensuite, quand ils seront fixés, peut-être je changerais leur nom,
tout en gardant un alias dans le source <tt>effects3.c</tt>.
</p>
<dl class="proto">
<dt>int
Image_effect_x_0(Image_Desc *src, Image_Desc *dst, int kr, int kg, int kb)</b></dt>
<dd>Déja plus de 4 ans de mise au point, et c'est pas encore fini...</dd>
<dt>int
Image_effect_x_1(Image_Desc *src, Image_Desc *dst)</b></dt>
<dd>Déja plus de 4 ans de mise au point, et c'est pas encore fini...</dd>
<dt>int
Image_effect_x_3(Image_Desc *src, Image_Desc *dst, int kx, int ky, char *comp)</b></dt>
<dd>Déja plus de 4 ans de mise au point, et c'est pas encore fini...</dd>
</dl>
<p class="HDP"><a href="#top">haut de page</a></p>
<a name="rgbmask"><h2>rgbmask</h2></a>
<p>
C'est nouveau, ça vient de sortir. Le principe est simple: éliminer, sur
des critères divers, une ou deux composantes RGB de l'image, en les
remplaçant par une valeur constante.
Hélas, ces effets ont un défaut: ils survivent très mal à la compression
<a href="img-fichiers.html#jpeg">JPEG</a>.
</p>
<dl class="proto">
<dt>int Image_rgbmask_H(Image_Desc *src, Image_Desc *dst, int gris);
<dd>Dans le sens horizontal...
<dt>int Image_rgbmask_V(Image_Desc *src, Image_Desc *dst, int gris);
<dd>Dans le sens vertival...
<dt>int Image_rgbmask_2(Image_Desc *src, Image_Desc *dst, int gris);
<dd>Bon, c'est pas mal, mais c'est quand même très dépendant des
dimensions de l'image.
<dt>int Image_rgbmask_R(Image_Desc *src, Image_Desc *dst, int gris);
<dd>Ah, celle-là semble prometteuse. En jouant sur la pondération
de l'aléa, on doit pouvoir obtenir quelques trucs sympas...
</dl>
<p class="HDP"><a href="#top">haut de page</a></p>
<a name="colorize"><h2>colorize</h2></a>
<p>
C'est nouveau, ça vient de sortir. Ce sont des expérimentations sur les
relations entre la luminosité, la couleur, et surtout la percevance des
gens face à une nouvelle vision du monde.
</p>
<dl class="proto">
<dt>int Image_BiColor_0(Image_Desc *src, Image_Desc *dst, int k)
<dd>Si c'est clair, ça devient sombre. Si c'est sombre, ça devient clair.
Vice-versa et réciproquement inclus. Le paramètre <tt>k</tt> ne sert à
rien et doit être mis à 0.
</dl>
<p>
Oh, bien entendu, ces tripotages de pixels ça n'est pas au niveau de la
<a href="http://foo.buvette.org/bf/pm/">troiD</a> de
<a href="http://foo.buvette.org/bf/hf/">merde</a> faite
sous <a href="http://slackware.com/">Linux</a>, mais j'ai quand même
dans l'idée d'appliquer ces trucs à des séquences vidéo ou
des <a href="http://la.buvette.org/photos/myrys/g/">GIfs animées</a>.
</p>
<p class="HDP"><a href="#top">haut de page</a></p>
<a name="essais"><h2>Quelques essais</h2></a>
<p>
La rubrique des trucs improbables, des tentatives avortées, des machins
pas finis. Nous allons commencer par un vieux truc : l'utilisation de
la récursion.
</p>
<dl class="proto">
<dt>int Image_call_recursion(Image_Desc *image, Image_Desc *dest, int param);
<dd>Euh, c'est une peu difficile d'expliquer ce que ça fait, mais il suffit
de savoir que certaines valeurs du paramètre sont meilleures que d'autres.
</dl>
<p>Et des fonctions dans ce genre, il y en a d'autres. Par exemple, pour obtenir
un effet assez peu similaire à la récursion, mais quand même, j'ai de la
mosaique sous le coude.
</p>
<dl class="proto">
<dt>int Image_mosaic_simple(Image_Desc *src, Image_Desc *dst);
<dd>Comme le nom l'indique clairement, c'est un truc simple.
<dt>int Image_mosaic_0(Image_Desc *src, Image_Desc *dst, int sx, int sy, int flg);
<dd>Comme le montre clairement le prototype, il y a des paramètres.
<tt>sx</tt> et <tt>sy</tt> sont les dimensions des pavés (il parait qu'il faut
dire &quot;tuiles&quot; maintenant) que l'on va examiner et traiter. Quand à
<tt>flg</tt>, je pense qu'il ne sert à rien, et qu'il faut mettre 0.
</dl>
<p class="HDP"><a href="#top">haut de page</a></p>
<a name="liens"><h2>liens</h2></a>
<p>
La classique rubrique des liens, toujours aussi vide.
Rattrapez vous <a href="libimage.html#liens">ici</a> ou
<a href="img-television.html"></a>.
</p>
<p class="footer">
vous pouvez me contacter sur mon
<a href="http://foo.bar.quux.over-blog.com/">blog</a><br>
Si votre demande est effective, je patche avec de la poudre verte.<br>
</p>
</body>
</html>