<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> & <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 "effets spéciaux" 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 "tuiles" 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">là</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>