Changeset 38932 in spip-zone


Ignore:
Timestamp:
Jun 21, 2010, 12:48:30 AM (10 years ago)
Author:
kent1@…
Message:

Tentative pour rendre ce plugin 2.1 ready ...

J'ai essayé de ne pas casser pour les anciennes versions ... mais si c'est le cas... vous savez vers qui vous devez râler...

Ajout d'un filtre image_negatif également ...

Location:
_plugins_/fonctions_images
Files:
3 added
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/fonctions_images/fonctions_images_fonctions.php

    r32054 r38932  
    11<?php
    22
     3/**
     4 * Si on est en 2.1 etc...
     5 */
     6if(is_array($GLOBALS['spip_matrice'])){
     7        $GLOBALS['spip_matrice']['image_rgb2hsv'] = 'filtres/images_complements.php';
     8        $GLOBALS['spip_matrice']['image_hsv2rgb'] = 'filtres/images_complements.php';
     9        $GLOBALS['spip_matrice']['image_estampage_alpha'] = 'filtres/images_complements.php';
     10        $GLOBALS['spip_matrice']['image_saturer'] = 'filtres/images_complements.php';
     11        $GLOBALS['spip_matrice']['image_niveaux_gris_auto'] = 'filtres/images_complements.php';
     12        $GLOBALS['spip_matrice']['image_podpod'] = 'filtres/images_complements.php';
     13        $GLOBALS['spip_matrice']['image_courbe'] = 'filtres/images_complements.php';
     14        $GLOBALS['spip_matrice']['image_float'] = 'filtres/images_complements.php';
     15        $GLOBALS['spip_matrice']['image_contour_alpha'] = 'filtres/images_complements.php';
     16        $GLOBALS['spip_matrice']['image_sincity'] = 'filtres/images_complements.php';
     17        $GLOBALS['spip_matrice']['image_dispersion'] = 'filtres/images_complements.php';
     18        $GLOBALS['spip_matrice']['image_rgb2hsl'] = 'filtres/images_complements.php';
     19        $GLOBALS['spip_matrice']['image_hue2rgb'] = 'filtres/images_complements.php';
     20        $GLOBALS['spip_matrice']['image_hsl2rgb'] = 'filtres/images_complements.php';
     21        $GLOBALS['spip_matrice']['image_reflechir'] = 'filtres/images_complements.php';
     22        $GLOBALS['spip_matrice']['image_negatif'] = 'filtres/images_complements.php';
    323
    4 /* ---------- fonctions de Paris Beyrouth ------------------------- */
    5 
    6 /*
    7  *
    8  * Fonctions pour roue chromatique
    9  * http://www.paris-beyrouth.org/Une-palette-de-couleurs
    10  *
    11  */
    12 function image_rgb2hsv ($R,$G,$B) {
    13         $var_R = ( $R / 255 ) ;                    //Where RGB values = 0 to 255
    14         $var_G = ( $G / 255 );
    15         $var_B = ( $B / 255 );
    16 
    17         $var_Min = min( $var_R, $var_G, $var_B ) ;   //Min. value of RGB
    18         $var_Max = max( $var_R, $var_G, $var_B ) ;   //Max. value of RGB
    19         $del_Max = $var_Max - $var_Min  ;           //Delta RGB value
    20 
    21         $V = $var_Max;
    22         $L = ( $var_Max + $var_Min ) / 2;
    23        
    24         if ( $del_Max == 0 )                     //This is a gray, no chroma...
    25         {
    26            $H = 0 ;                            //HSL results = 0 to 1
    27            $S = 0 ;
    28         }
    29         else                                    //Chromatic data...
    30         {
    31            $S = $del_Max / $var_Max;
    32        
    33            $del_R = ( ( ( $var_Max - $var_R ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
    34            $del_G = ( ( ( $var_Max - $var_G ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
    35            $del_B = ( ( ( $var_Max - $var_B ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
    36        
    37            if      ( $var_R == $var_Max ) $H = $del_B - $del_G;
    38            else if ( $var_G == $var_Max ) $H = ( 1 / 3 ) + $del_R - $del_B;
    39            else if ( $var_B == $var_Max ) $H = ( 2 / 3 ) + $del_G - $del_R;
    40        
    41            if ( $H < 0 )  $H =  $H + 1;
    42            if ( $H > 1 )  $H = $H - 1;
    43         }
    44                                
    45         $ret["h"] = $H;
    46         $ret["s"] = $S;
    47         $ret["v"] = $V;
    48        
    49         return $ret;
     24        $GLOBALS['spip_matrice']['couleur_chroma'] = 'filtres/couleurs_complements.php';
     25        $GLOBALS['spip_matrice']['couleur_saturer'] = 'filtres/couleurs_complements.php';
     26        $GLOBALS['spip_matrice']['couleur_tableau_chroma'] = 'filtres/couleurs_complements.php';
     27        $GLOBALS['spip_matrice']['couleur_teinter'] = 'filtres/couleurs_complements.php';
     28        $GLOBALS['spip_matrice']['couleur_inverserluminosite'] = 'filtres/couleurs_complements.php';
     29        $GLOBALS['spip_matrice']['couleur_foncerluminosite'] = 'filtres/couleurs_complements.php';
     30        $GLOBALS['spip_matrice']['couleur_eclaircirluminosite'] = 'filtres/couleurs_complements.php';
    5031}
    51 
    52 
    53 /*
    54  * http://www.paris-beyrouth.org/Une-palette-de-couleurs
    55  */
    56 function image_hsv2rgb ($H,$S,$V) {
    57         if ( $S == 0 )                       //HSV values = 0 to 1
    58         {
    59            $R = $V * 255;
    60            $G = $V * 255;
    61            $B = $V * 255;
    62         }
    63         else
    64         {
    65            $var_h = $H * 6;
    66            if ( $var_h == 6 ) $var_h = 0 ;     //H must be < 1
    67            $var_i = floor( $var_h )  ;           //Or ... var_i = floor( var_h )
    68            $var_1 = $V * ( 1 - $S );
    69            $var_2 = $V * ( 1 - $S * ( $var_h - $var_i ) );
    70            $var_3 = $V * ( 1 - $S * ( 1 - ( $var_h - $var_i ) ) );
    71        
    72            if      ( $var_i == 0 ) { $var_r = $V     ; $var_g = $var_3 ; $var_b = $var_1 ; }
    73            else if ( $var_i == 1 ) { $var_r = $var_2 ; $var_g = $V     ; $var_b = $var_1 ; }
    74            else if ( $var_i == 2 ) { $var_r = $var_1 ; $var_g = $V     ; $var_b = $var_3 ; }
    75            else if ( $var_i == 3 ) { $var_r = $var_1 ; $var_g = $var_2 ; $var_b = $V ;     }
    76            else if ( $var_i == 4 ) { $var_r = $var_3 ; $var_g = $var_1 ; $var_b = $V ; }
    77            else                   { $var_r = $V     ; $var_g = $var_1 ; $var_b = $var_2; }
    78        
    79            $R = $var_r * 255;                  //RGB results = 0 to 255
    80            $G = $var_g * 255;
    81            $B = $var_b * 255;
    82         }
    83         $ret["r"] = floor($R);
    84         $ret["g"] = floor($G);
    85         $ret["b"] = floor($B);
    86        
    87         return $ret;
     32else{
     33        include_spip('filtres/images_complements');
     34        include_spip('filtres/couleurs_complements');
    8835}
    89 
    90 
    91 /*
    92  * http://www.paris-beyrouth.org/Une-palette-de-couleurs
    93  */
    94 function couleur_chroma ($coul, $num) {
    95 
    96         $pos = substr($num, 0, strpos($num, "/")) -  1;
    97         $tot = substr($num, strpos($num, "/")+1, strlen($num));
    98        
    99         include_spip("inc/filtres_images");
    100         $couleurs = couleur_hex_to_dec($coul);
    101         $r= $couleurs["red"];
    102         $g= $couleurs["green"];
    103         $b= $couleurs["blue"];
    104 
    105         $hsv = image_rgb2hsv($r,$g,$b);
    106         $h = $hsv["h"];
    107         $s = $hsv["s"];
    108         $v = $hsv["v"];
    109        
    110         $h = $h + (1/$tot)*$pos;
    111         if ($h > 1) $h = $h - 1;
    112                                        
    113         $rgb = image_hsv2rgb($h,$s,$v);
    114         $r = $rgb["r"];
    115         $g = $rgb["g"];
    116         $b = $rgb["b"];
    117        
    118         $couleurs = couleur_dec_to_hex($r, $g, $b);
    119        
    120         return $couleurs;
    121 }
    122 
    123 
    124 /*
    125  * http://www.paris-beyrouth.org/Des-titres-en-relief
    126  */
    127 function image_estampage_alpha($im, $trait=1, $prof=1)
    128 {
    129         $dec1 = floor($trait/2);
    130         $dec2 = ceil($trait/2);
    131 
    132         $image = image_valeurs_trans($im, "estampage-$trait-$prof");
    133         if (!$image) return("");
    134        
    135        
    136         $x_i = $image["largeur"];
    137         $y_i = $image["hauteur"];
    138         $im = $image["fichier"];
    139         $dest = $image["fichier_dest"];
    140         $creer = $image["creer"];
    141        
    142         if ($creer) {
    143                 $im = $image["fonction_imagecreatefrom"]($im);
    144                 $im_ = imagecreatetruecolor($x_i, $y_i);
    145                 @imagealphablending($im_, false);
    146                 @imagesavealpha($im_,true);
    147                 $color_t = ImageColorAllocateAlpha( $im_, 255, 255, 255 , 127 );
    148                 imagefill ($im_, 0, 0, $color_t);
    149 
    150                 for ($x = 0; $x < $x_i; $x++) {
    151                         for ($y=0; $y < $y_i; $y++) {
    152                        
    153                                 $rgb = ImageColorAt($im, $x, $y);
    154                                 $a = ($rgb >> 24) & 0xFF;
    155 
    156                                 $x1 = $x+$dec1;
    157                                 $y1 = $y+$dec1;
    158                                 if ($x1 < 0 OR $x1 >= $x_i) $x1 = $x;
    159                                 if ($y1 < 0 OR $y1 >= $y_i) $y1 = $y;
    160                                 $rgb1 = ImageColorAt($im, $x1, $y1);
    161                                 $a1 = ($rgb1 >> 24) & 0xFF;
    162 
    163                                 $x2 = $x-$dec2;
    164                                 $y2 = $y-$dec2;
    165                                 if ($x2 < 0 OR $x2 >= $x_i) $x2 = $x;
    166                                 if ($y2 < 0 OR $y2 >= $y_i) $y2 = $y;
    167                                 $rgb2 = ImageColorAt($im, $x2, $y2);
    168                                 $a2 = ($rgb2 >> 24) & 0xFF;
    169 
    170                                 $m = round((($a-$a1)+($a2-$a))*$prof);
    171                                 $m = max(min($m,127),-127);
    172                                 $m += 127;
    173                                 $color = ImageColorAllocateAlpha( $im_, $m, $m, $m , 0 );
    174                                 imagesetpixel ($im_, $x, $y, $color);                   
    175                         }
    176                 }
    177                 $image["fonction_image"]($im_, "$dest");
    178         }
    179 
    180         $class = $image["class"];
    181         if (strlen($class) > 1) $tags=" class='$class'";
    182         $tags = "$tags alt='".$image["alt"]."'";
    183         $style = $image["style"];
    184         if (strlen($style) > 1) $tags="$tags style='$style'";
    185        
    186         return "<img src='$dest'$tags />";
    187 }
    188 
    189 
    190 
    191 /*
    192  * http://www.paris-beyrouth.org/De-saturer-une-image-en-passant-en
    193  */
    194 function image_saturer($im, $sat=1)
    195 {
    196         $image = image_valeurs_trans($im, "saturer-$sat");
    197         if (!$image) return("");
    198        
    199         $x_i = $image["largeur"];
    200         $y_i = $image["hauteur"];
    201        
    202         $im = $image["fichier"];
    203         $dest = $image["fichier_dest"];
    204         $creer = $image["creer"];
    205        
    206         if ($creer) {
    207                 $im = $image["fonction_imagecreatefrom"]($im);
    208 
    209                 $im_ = imagecreatetruecolor($x_i, $y_i);
    210                 @imagealphablending($im_, false);
    211                 @imagesavealpha($im_,true);
    212                 $color_t = ImageColorAllocateAlpha( $im_, 255, 255, 255 , 127 );
    213                 imagefill ($im_, 0, 0, $color_t);
    214 
    215                 for ($x = 0; $x < $x_i; $x++) {
    216                         for ($y=0; $y < $y_i; $y++) {
    217                        
    218                                 $rgb = ImageColorAt($im, $x, $y);
    219                                 $a = ($rgb >> 24) & 0xFF;
    220                                 $r = ($rgb >> 16) & 0xFF;
    221                                 $g = ($rgb >> 8) & 0xFF;
    222                                 $b = $rgb & 0xFF;
    223                                
    224                                 if ($a < 127) {
    225                                         $hsv = image_rgb2hsv($r,$g,$b);
    226                                         $h = $hsv["h"];
    227                                         $s = $hsv["s"];
    228                                         $v = $hsv["v"];
    229                                        
    230                                         $s = $s * $sat;                                                                 $s = min($s,1);
    231                                        
    232                                         $rgb = image_hsv2rgb($h,$s,$v);
    233                                         $r = $rgb["r"];
    234                                         $g = $rgb["g"];
    235                                         $b = $rgb["b"];
    236 
    237                                 }
    238                                 $color = ImageColorAllocateAlpha( $im_, $r, $g, $b , $a );
    239                                 imagesetpixel ($im_, $x, $y, $color);                           }
    240                 }               
    241                 $image["fonction_image"]($im_, "$dest");                }
    242 
    243         $class = $image["class"];
    244         if (strlen($class) > 1) $tags=" class='$class'";
    245         $tags = "$tags alt='".$image["alt"]."'";
    246         $style = $image["style"];
    247        
    248         return "<img src='$dest'$tags />";
    249 }
    250 
    251 
    252 /*
    253  * http://www.paris-beyrouth.org/Corriger-les-niveaux-des-images
    254  */
    255 function image_niveaux_gris_auto($im, $limite=1000) {
    256 
    257         // $limite=1000: les nuances min et max representent 0,1% du total
    258        
    259         $image = image_valeurs_trans($im, "niveaux_gris_auto-$limite");
    260         if (!$image) return("");
    261 
    262         $x_i = $image["largeur"];
    263         $y_i = $image["hauteur"];
    264         $im = $image["fichier"];
    265         $dest = $image["fichier_dest"];
    266         $creer = $image["creer"];
    267 
    268         if ($creer) {
    269                 $im = $image["fonction_imagecreatefrom"]($im);
    270 
    271                 // Calculer les poids des differentes nuances
    272                 for ($x = 0; $x < $x_i; $x++) {
    273                         for ($y=0; $y < $y_i; $y++) {
    274 
    275                                 $rgb = ImageColorAt($im, $x, $y);
    276                                 $a = ($rgb >> 24) & 0xFF;
    277                                 $r = ($rgb >> 16) & 0xFF;
    278                                 $g = ($rgb >> 8) & 0xFF;
    279                                 $b = $rgb & 0xFF;
    280 
    281                                 $a = (127-$a) / 127;
    282                                 $a=1;
    283                                
    284                                 $gris = round($a*($r+$g+$b) / 3);
    285                                 $r = round($a*$r);
    286                                 $g = round($a*$g);
    287                                 $b = round($a*$b);
    288                                                                
    289                                 $val_gris[$gris] ++;
    290                         }
    291                 }
    292 
    293                 $total = $x_i * $y_i;
    294 
    295                 for ($bas = 0; $somme_bas < $total/$limite; $bas++) {
    296                         $somme_bas += $val_gris[$bas];
    297                 }       
    298                
    299                 for ($haut = 255; $somme_haut < $total/$limite ; $haut--) {
    300                         $somme_haut += $val_gris[$haut];
    301                 }
    302        
    303                 $courbe[0] = 0;
    304                 $courbe[255] = 255;
    305                 $courbe[$bas] = 0;
    306                 $courbe[$haut] = 255;
    307        
    308                 // Calculer le tableau des correspondances
    309                 ksort($courbe);
    310                 while (list($key, $val) = each($courbe)) {
    311                         if ($key > 0) {
    312                                 $key1 = $key_old;
    313                                 $val1 = $val_old;
    314                                 $prop = ($val - $val1) / ($key-$key1);
    315                                 for ($i = $key1; $i < $key; $i++) {
    316                                         $valeur = round($prop * ($i - $key1) + $val1);
    317                                         $courbe[$i] = $valeur;
    318                                 }
    319                                 $key_old = $key;
    320                                 $val_old = $val;
    321                         } else {
    322                                 $key_old = $key;
    323                                 $val_old = $val;
    324                         }
    325                 }
    326 
    327                 // Appliquer les correspondances
    328                 $im2 = imagecreatetruecolor($x_i, $y_i);
    329                 @imagealphablending($im2, false);
    330                 @imagesavealpha($im2,true);
    331                 $color_t = ImageColorAllocateAlpha( $im2, 255, 255, 255 , 0 );
    332                 imagefill ($im2, 0, 0, $color_t);
    333 
    334                 for ($x = 0; $x < $x_i; $x++) {
    335                         for ($y=0; $y < $y_i; $y++) {
    336                                 $rgb = ImageColorAt($im, $x, $y);
    337                                 $a = ($rgb >> 24) & 0xFF;
    338                                 $r = ($rgb >> 16) & 0xFF;
    339                                 $v = ($rgb >> 8) & 0xFF;
    340                                 $b = $rgb & 0xFF;
    341                                
    342                                 $r = $courbe[$r];
    343                                 $v = $courbe[$v];
    344                                 $b = $courbe[$b];
    345                                
    346                                 $color = ImageColorAllocateAlpha( $im2, $r, $v, $b , $a );
    347                                 imagesetpixel ($im2, $x, $y, $color);                   
    348                         }
    349                 }
    350 
    351                 $image["fonction_image"]($im2, "$dest");
    352                 imagedestroy($im2);
    353                 imagedestroy($im);
    354         }
    355 
    356         $class = $image["class"];
    357         if (strlen($class) > 1) $tags=" class='$class'";
    358         $tags = "$tags alt='".$image["alt"]."'";
    359         $style = $image["style"];
    360         if (strlen($style) > 1) $tags="$tags style='$style'";
    361        
    362         return "<img src='$dest'$tags />";
    363 }
    364 
    365 /*
    366  * http://www.paris-beyrouth.org/Creer-automatiquement-une
    367  */
    368 function image_podpod($im, $coul='000000', $deb=0, $fin=70)
    369 {
    370         include_spip("inc/filtres_images");
    371         $image = image_valeurs_trans($im, "podpod-$coul-$deb-$fin","png");
    372         if (!$image) return("");
    373 
    374         $couleurs = couleur_hex_to_dec($coul);
    375         $dr= $couleurs["red"];
    376         $dv= $couleurs["green"];
    377         $db= $couleurs["blue"];
    378        
    379         $x_i = $image["largeur"];
    380         $y_i = $image["hauteur"];
    381        
    382         $im = $image["fichier"];
    383         $dest = $image["fichier_dest"];
    384        
    385         $creer = $image["creer"];
    386        
    387         if ($creer) {
    388                 $im = $image["fonction_imagecreatefrom"]($im);
    389 
    390                 $im_ = imagecreatetruecolor($x_i, $y_i);
    391                 @imagealphablending($im_, false);
    392                 @imagesavealpha($im_,true);
    393                 $color_t = ImageColorAllocateAlpha( $im_, 255, 255, 255 , 127 );
    394                 imagefill ($im_, 0, 0, $color_t);
    395 
    396                 for ($x = 0; $x < $x_i; $x++) {
    397                         for ($y=0; $y < $y_i; $y++) {
    398                        
    399                                 $rgb = ImageColorAt($im, $x, $y);
    400                                 $a = ($rgb >> 24) & 0xFF;
    401                                 $r = ($rgb >> 16) & 0xFF;
    402                                 $g = ($rgb >> 8) & 0xFF;
    403                                 $b = $rgb & 0xFF;
    404                                
    405                                 $g = round(($r+$g+$b) / 3);
    406                                
    407                                 if ($g >= $deb AND $g <= $fin) $color = ImageColorAllocateAlpha( $im_, $dr, $dv, $db , $a );
    408                                 else $color = ImageColorAllocateAlpha( $im_, 0, 0, 0 , 127 );
    409                                
    410                                 imagesetpixel ($im_, $x, $y, $color);   
    411                         }
    412                 }               
    413                 $image["fonction_image"]($im_, "$dest");       
    414         }
    415 
    416         $class = $image["class"];
    417         if (strlen($class) > 1) $tags=" class='$class'";
    418         $tags = "$tags alt='".$image["alt"]."'";
    419         $style = $image["style"];
    420        
    421         return "<img src='$dest'$tags />";
    422 }
    423 
    424 
    425 /*
    426  * http://www.paris-beyrouth.org/Modifier-les-courbes-d-une-image
    427  */
    428 function image_courbe($im, $couche, $courb="") {
    429 
    430         $numargs = func_num_args();
    431         $arg_list = func_get_args();
    432         $texte = $arg_list[0];
    433         for ($i = 1; $i < $numargs; $i++) {
    434                 if (preg_match("#=#", $arg_list[$i])) {
    435                         $nom_variable = substr($arg_list[$i], 0, strpos($arg_list[$i], "="));
    436                         $val_variable = substr($arg_list[$i], strpos($arg_list[$i], "=")+1, strlen($arg_list[$i]));
    437                         $courbe[$nom_variable] = $val_variable;
    438                 }
    439         }
    440 
    441         $image = image_valeurs_trans($im, "courbe-$couche-".serialize($courbe));
    442         if (!$image) return("");
    443 
    444         $x_i = $image["largeur"];
    445         $y_i = $image["hauteur"];
    446        
    447         $im = $image["fichier"];
    448         $dest = $image["fichier_dest"];
    449         $creer = $image["creer"];
    450 
    451         if ($creer) {
    452                 $courbe[0] = 0;
    453                 $courbe[255] = 255;
    454        
    455                 ksort($courbe);
    456                 while (list($key, $val) = each($courbe)) {
    457                         if ($key > 0) {
    458                                 $key1 = $key_old;
    459                                 $val1 = $val_old;
    460                                 $prop = ($val - $val1) / ($key-$key1);
    461                                 for ($i = $key1; $i < $key; $i++) {
    462                                         $valeur = round($prop * ($i - $key1) + $val1);
    463                                         $courbe[$i] = $valeur;
    464                                 }
    465                                 $key_old = $key;
    466                                 $val_old = $val;
    467                         } else {
    468                                 $key_old = $key;
    469                                 $val_old = $val;
    470                         }
    471                 }
    472 
    473                 $im = $image["fonction_imagecreatefrom"]($im);
    474                 $im_ = imagecreatetruecolor($x_i, $y_i);
    475                 @imagealphablending($im_, false);
    476                 @imagesavealpha($im_,true);
    477                 $color_t = ImageColorAllocateAlpha( $im_, 255, 255, 255 , 0 );
    478                 imagefill ($im_, 0, 0, $color_t);
    479 
    480                 for ($x = 0; $x < $x_i; $x++) {
    481                         for ($y=0; $y < $y_i; $y++) {
    482                                 $rgb = ImageColorAt($im, $x, $y);
    483                                 $a = ($rgb >> 24) & 0xFF;
    484                                 $r = ($rgb >> 16) & 0xFF;
    485                                 $v = ($rgb >> 8) & 0xFF;
    486                                 $b = $rgb & 0xFF;
    487                                
    488                                 if ($couche == "rvb" OR $couche == "r") $r = $courbe[$r];
    489                                 if ($couche == "rvb" OR $couche == "v") $v = $courbe[$v];
    490                                 if ($couche == "rvb" OR $couche == "b") $b = $courbe[$b];
    491                                
    492                                 $color = ImageColorAllocateAlpha( $im_, $r, $v, $b , $a );
    493                                 imagesetpixel ($im_, $x, $y, $color);                   
    494                         }
    495                 }
    496 
    497                 $image["fonction_image"]($im_, "$dest");
    498                 imagedestroy($im_);
    499                 imagedestroy($im);
    500         }
    501 
    502         $class = $image["class"];
    503         if (strlen($class) > 1) $tags=" class='$class'";
    504         $tags = "$tags alt='".$image["alt"]."'";
    505         $style = $image["style"];
    506         if (strlen($style) > 1) $tags="$tags style='$style'";
    507         return "<img src='$dest'$tags />";
    508 }
    509 
    510 
    511 /*
    512  * http://www.paris-beyrouth.org/Un-habillage-irregulier
    513  */
    514 function image_float ($img, $align, $margin=10) {
    515 
    516         $image = image_valeurs_trans($img, "float-$align", "php");
    517         if (!$image) return("");
    518 
    519         $w = $image["largeur"];
    520         $h = $image["hauteur"];
    521         $precision = round($h / 5);
    522        
    523         $im = $image["fichier"];
    524         $dest = $image["fichier_dest"];
    525         $creer = $image["creer"];
    526 
    527         $ret .= "<div style='position: relative; float: $align; width: 0px; height: 0px;'><img src='$im' class='format_png' alt='' style='position: absolute; $align: 0px;' /></div>";
    528 
    529         if ($creer) {
    530                 $nouveau = image_valeurs_trans(image_reduire($im, 0, $precision),"");
    531                 $im_n = $nouveau["fichier"];
    532                 $x_i = $nouveau["largeur"];
    533                 $y_i = $nouveau["hauteur"];
    534                 $rapport = ($w / $x_i);
    535                
    536                 $im_n = $image["fonction_imagecreatefrom"]($im_n);
    537 
    538                 // une premiere passe
    539                 // pour recuperer les valeurs
    540                 for ($j = 0; $j < $y_i; $j++) {
    541                         $transp = true;
    542                
    543                         for ($i = 0; $i < $x_i && $transp; $i++) {
    544 
    545                                 if ($align == "right") $rgb = ImageColorAt($im_n, $i+1, $j);
    546                                 else $rgb = ImageColorAt($im_n, ($x_i - $i)-1, $j);
    547                                 $a = ($rgb >> 24) & 0xFF;
    548 
    549                                 if ($a > 125) $larg[$j] ++;
    550                                 else $transp = false;
    551                                 }                       
    552                 }
    553                
    554                 $larg[-1] = $w;
    555                 $larg[$y_i] = $w;
    556                 // une deuxieme passe
    557                 // pour appliquer les valeurs
    558                 // en utilisant les valeurs precedente et suivante
    559                 for ($j = 0; $j < $y_i; $j++) {
    560                         $reste = ($precision - $j);
    561                         $haut_rest = $h - $haut_tot;
    562                         $hauteur = round(($haut_rest) / $reste);
    563                         $haut_tot = $haut_tot + $hauteur;
    564                         $resultat = min($larg[$j-1],$larg[$j],$larg[$j+1]);
    565                        
    566                         $forme .= "\n<div style='float: $align; clear: $align; width: ".($margin+round(($w - ($resultat)*$rapport)))."px ; height: ".round($hauteur)."px; overflow: hidden;'></div>";
    567                 }
    568                 // Ajouter un div de plus en dessous
    569                 $forme .= "\n<div style='float: $align; clear: $align; width: ".($margin+round(($w - ($resultat)*$rapport)))."px ; height: ".round($hauteur)."px; overflow: hidden;'></div>";
    570 
    571                 // Sauvegarder le fichier               
    572                 $handle = fopen($dest, 'w');
    573                 fwrite($handle, $forme);
    574                 fclose($handle);
    575 
    576                 $ret .= $forme;
    577         }
    578         else {
    579                 $ret .= join(file($dest),"");
    580         }
    581 
    582         return $ret;
    583 }
    584 
    585 
    586 /*
    587  * http://www.paris-beyrouth.org/Tracer-les-contours-de
    588  */
    589 function image_contour_alpha($im, $coul='000000', $trait=1)
    590 {
    591         $image = image_valeurs_trans($im, "contour-$coul-$trait", "png");
    592         if (!$image) return("");
    593 
    594         include_spip("inc/filtres_images");
    595         $couleurs = couleur_hex_to_dec($coul);
    596         $dr= $couleurs["red"];
    597         $dv= $couleurs["green"];
    598         $db= $couleurs["blue"];
    599        
    600         $x_i = $image["largeur"];
    601         $y_i = $image["hauteur"];
    602        
    603         $im = $image["fichier"];
    604         $dest = $image["fichier_dest"];
    605        
    606         $creer = $image["creer"];
    607        
    608         if ($creer) {
    609                 $im = $image["fonction_imagecreatefrom"]($im);
    610                 $im_ = imagecreatetruecolor($x_i, $y_i);
    611                 @imagealphablending($im_, false);
    612                 @imagesavealpha($im_,true);
    613                 $color_t = ImageColorAllocateAlpha( $im_, 255, 255, 255 , 127 );
    614                 imagefill ($im_, 0, 0, $color_t);
    615 
    616                 for ($x = 0; $x < $x_i; $x++) {
    617                         for ($y=0; $y < $y_i; $y++) {
    618                        
    619                                 $rgb = ImageColorAt($im, $x, $y);
    620                                 $a = ($rgb >> 24) & 0xFF;
    621                                
    622                                 $dif = false;
    623                                 $m = 0;
    624                                 $t = 0;
    625                                 for ($ix = -1*$trait/2; $ix <= $trait/2; $ix++) {
    626                                         for ($iy = -1*$trait/2; $iy <= $trait/2; $iy++) {
    627                                                 $x2 = $x + $ix;
    628                                                 $y2 = $y + $iy;
    629                                                 if ($x2 >=0 AND $y2 >= 0 AND $x2 < $x_i AND $y2  < $y_i) {
    630                                                 $t++;
    631                                                         $rgb2 = ImageColorAt($im, $x2, $y2);
    632                                                         $a2 = ($rgb2 >> 24) & 0xFF;
    633                                                         $r2 = ($rgb2 >> 16) & 0xFF;
    634                                                         $g2 = ($rgb2 >> 8) & 0xFF;
    635                                                         $b2 = $rgb2 & 0xFF;
    636        
    637                                                         if ($a != $a2) {
    638                                                                 $dx = min(abs($ix),abs($iy));
    639                                                                 $dy = max(abs($ix),abs($iy));
    640                                                                 if ($mem[$dx][$dy]) $d = $mem[$dx][$dy];
    641                                                                 else {
    642                                                                         $mem[$dx][$dy] = sqrt(($dx)*($dx)+($dy)*($dy));
    643                                                                         $d = $mem[$dx][$dy];
    644                                                                 }
    645                                                                 if ($d>0) {
    646                                                                         $m = $m + (abs($a2-$a) / $d);
    647                                                                 } else {
    648                                                                         $m = $m + 127;
    649                                                                 }
    650                                                         }
    651                                                 }
    652                                         }
    653                                 }
    654                                 $m = 127 - (($m / $t) * $trait);
    655                                 $m = min(max($m, 0), 127);
    656                                                                                
    657                                 $color = ImageColorAllocateAlpha( $im_, $dr, $dv, $db , round($m) );
    658                                 imagesetpixel ($im_, $x, $y, $color);                   
    659                         }
    660                 }
    661                 $image["fonction_image"]($im_, "$dest");
    662         }
    663 
    664         $class = $image["class"];
    665         if (strlen($class) > 1) $tags=" class='$class'";
    666         $tags = "$tags alt='".$image["alt"]."'";
    667         $style = $image["style"];
    668         if (strlen($style) > 1) $tags="$tags style='$style'";
    669        
    670         return "<img src='$dest'$tags />";
    671 }
    672 
    673 
    674 
    675 /*
    676  * http://www.paris-beyrouth.org/Welcome-to-Spip-City
    677  */
    678 function image_sincity($im)
    679 {
    680         $image = image_valeurs_trans($im, "sincity");
    681         if (!$image) return("");
    682        
    683         $x_i = $image["largeur"];
    684         $y_i = $image["hauteur"];
    685        
    686         $im = $image["fichier"];
    687         $dest = $image["fichier_dest"];
    688         $creer = $image["creer"];
    689        
    690         if ($creer) {
    691                 $im = $image["fonction_imagecreatefrom"]($im);
    692 
    693                 $im_ = imagecreatetruecolor($x_i, $y_i);
    694                 @imagealphablending($im_, false);
    695                 @imagesavealpha($im_,true);
    696                 $color_t = ImageColorAllocateAlpha( $im_, 255, 255, 255 , 127 );
    697                 imagefill ($im_, 0, 0, $color_t);
    698 
    699                 $tol = 0.05 ;
    700                 for ($x = 0; $x < $x_i; $x++) {
    701                         for ($y=0; $y < $y_i; $y++) {
    702                        
    703                                 $rgb = ImageColorAt($im, $x, $y);
    704                                 $a = ($rgb >> 24) & 0xFF;
    705                                 $r = ($rgb >> 16) & 0xFF;
    706                                 $g = ($rgb >> 8) & 0xFF;
    707                                 $b = $rgb & 0xFF;
    708                                
    709                                 if ($a < 127) {
    710                                         $hsv = image_rgb2hsv($r,$g,$b);
    711                                         $h = $hsv["h"];
    712                                         $s = $hsv["s"];
    713                                         $v = $hsv["v"];
    714                                        
    715                                         if ($h < $tol OR $h > 1-$tol) {
    716                                                 if ($h < $tol) {
    717                                                         $dist = ($tol-$h);
    718                                                 }
    719                                                 else if ($h > 1-$tol) {
    720                                                         $dist = ($h - (1-$tol));
    721                                                 }
    722                                                 $s = $s * ($dist/$tol);
    723                                                 if ($s > 1) $s = 1;
    724                                                 $h = 0;
    725                                         } else {
    726                                                 $s = 0;
    727                                         }
    728                                        
    729                                         $v = 2*($v - 0.6) + 0.6;
    730                                        
    731                                         if ($v > 1) $v=1;
    732                                         if ($v < 0) $v =0;
    733                                        
    734                                         $rgb = image_hsv2rgb($h,$s,$v);
    735                                         $r = $rgb["r"];
    736                                         $g = $rgb["g"];
    737                                         $b = $rgb["b"];
    738                                 }
    739                                 $color = ImageColorAllocateAlpha( $im_, $r, $g, $b , $a );
    740                                 imagesetpixel ($im_, $x, $y, $color);                           }
    741                 }               
    742                 $image["fonction_image"]($im_, "$dest");                }
    743 
    744         $class = $image["class"];
    745         if (strlen($class) > 1) $tags=" class='$class'";
    746         $tags = "$tags alt='".$image["alt"]."'";
    747         $style = $image["style"];
    748        
    749         return "<img src='$dest'$tags />";
    750 }
    751 
    752 
    753 
    754 
    755 /*
    756  * http://www.paris-beyrouth.org/Un-filtre-de-dispersion-graphique
    757  */
    758 function image_dispersion($im, $masque, $h=5, $v=5, $pos="") {
    759        
    760         $nom = preg_replace("#\.(png|jpg|gif)$#", "", $masque);
    761         $nom = str_replace("/","-",$nom);
    762 
    763         $numargs = func_num_args();
    764         $arg_list = func_get_args();
    765         $texte = $arg_list[0];
    766         for ($i = 1; $i < $numargs; $i++) {
    767                 if (preg_match("#=#", $arg_list[$i])) {
    768                         $nom_variable = substr($arg_list[$i], 0, strpos($arg_list[$i], "="));
    769                         $val_variable = substr($arg_list[$i], strpos($arg_list[$i], "=")+1, strlen($arg_list[$i]));
    770                         $variable["$nom_variable"] = $val_variable;
    771                         $defini["$nom_variable"] = 1;
    772                 }
    773         }
    774 
    775         $image = valeurs_image_trans($im, "disp$nom-$h-$v$pos", "png");
    776         if (!$image) return("");
    777 
    778         $x_i = $image["largeur"];
    779         $y_i = $image["hauteur"];
    780         $im = $image["fichier"];
    781         $dest = $image["fichier_dest"];
    782         $creer = $image["creer"];
    783 
    784         if (strlen($pos) > 0) {
    785                 $placer = true;
    786         }
    787         else $placer = false;
    788 
    789         if ($creer) {
    790                 include_spip('inc/logos'); // bicoz presence reduire_image
    791        
    792                 $masque = find_in_path($masque);       
    793                 $mask = valeurs_image_trans($masque,"");
    794                 $im_m = $mask["fichier"];
    795                 $x_m = $mask["largeur"];
    796                 $y_m = $mask["hauteur"];
    797        
    798                 $im2 = $mask["fonction_imagecreatefrom"]($masque);
    799                
    800                 if ($placer) {
    801                         // On fabriquer une version "agrandie" du masque,
    802                         // aux dimensions de l'image source
    803                         // et on "installe" le masque dans cette image
    804                         // ainsi: aucun redimensionnement
    805                        
    806                         $dx = 0;
    807                         $dy = 0;
    808                        
    809                         if ($defini["right"]) {
    810                                 $right = $variable["right"];
    811                                 $dx = ($x_i - $x_m) - $right;
    812                         }
    813                         if ($defini["bottom"]) {
    814                                 $bottom = $variable["bottom"];
    815                                 $dy = ($y_i - $y_m) - $bottom;
    816                                 }
    817                         if ($defini["top"]) {
    818                                 $top = $variable["top"];
    819                                 $dy = $top;
    820                         }
    821                         if ($defini["left"]) {
    822                                 $left = $variable["left"];
    823                                 $dx = $left;
    824                         }
    825                                
    826                         $im3 = imagecreatetruecolor($x_i, $y_i);
    827                         @imagealphablending($im3, false);
    828                         @imagesavealpha($im3,true);
    829                         $color_t = ImageColorAllocateAlpha( $im3, 128, 128, 128 , 0 );
    830                         imagefill ($im3, 0, 0, $color_t);
    831 
    832                         imagecopy ( $im3, $im2, $dx, $dy, 0, 0, $x_m, $y_m);   
    833 
    834                         imagedestroy($im2);
    835                         $im2 = imagecreatetruecolor($x_i, $y_i);
    836                         @imagealphablending($im2, false);
    837                         @imagesavealpha($im2,true);
    838                        
    839                         imagecopy ( $im2, $im3, 0, 0, 0, 0, $x_i, $y_i);                       
    840                         imagedestroy($im3);
    841                         $x_m = $x_i;
    842                         $y_m = $y_i;
    843                 }
    844        
    845                 $rapport = $x_i / $x_m;
    846                 if (($y_i / $y_m) < $rapport ) {
    847                         $rapport = $y_i / $y_m;
    848                 }
    849                        
    850                 $x_d = ceil($x_i / $rapport);
    851                 $y_d = ceil($y_i / $rapport);
    852                
    853                 if ($x_i < $x_m OR $y_i < $y_m) {
    854                         $x_dest = $x_i;
    855                         $y_dest = $y_i;
    856                         $x_dec = 0;
    857                         $y_dec = 0;
    858                 } else {
    859                         $x_dest = $x_m;
    860                         $y_dest = $y_m;
    861                         $x_dec = round(($x_d - $x_m) /2);
    862                         $y_dec = round(($y_d - $y_m) /2);
    863                 }
    864 
    865                 $nouveau = valeurs_image_trans(reduire_image($im, $x_d, $y_d),"");
    866                 $im_n = $nouveau["fichier"];
    867                 $im = $nouveau["fonction_imagecreatefrom"]($im_n);
    868                 $im_ = imagecreatetruecolor($x_dest, $y_dest);
    869                 @imagealphablending($im_, false);
    870                 @imagesavealpha($im_,true);
    871                 $color_t = ImageColorAllocateAlpha( $im_, 255, 255, 255 , 127 );
    872                 imagefill ($im_, 0, 0, $color_t);
    873 
    874                 for ($x = 0; $x < $x_dest; $x++) {
    875                         for ($y=0; $y < $y_dest; $y++) {
    876 
    877                                 $rgb2 = ImageColorAt($im2, $x+$x_dec, $y+$y_dec);
    878                                 $a2 = ($rgb2 >> 24) & 0xFF;
    879                                 $r2 = ($rgb2 >> 16) & 0xFF;
    880                                 $g2 = ($rgb2 >> 8) & 0xFF;
    881                                 $b2 = $rgb2 & 0xFF;
    882 
    883                                 $g2 = ($r2+$g2+$b2)/3;
    884                                 $val = ($g2-127)/127;
    885                                 $xd = $x - ($val*$h);
    886                                 $yd = $y + ($val*$v);
    887 
    888                                 $xd = max(0,$xd);
    889                                 $yd = max(0,$yd);
    890                                 if ($xd > $x_dest - $x_dec - 1) $xd = $x_dest - $x_dec - 1;
    891                                 if ($yd > $y_dest - $y_dec - 1) $yd = $y_dest - $y_dec - 1;
    892 
    893                                 $rgb = ImageColorAt($im, $xd+$x_dec, $yd+$y_dec);
    894                                 $a = ($rgb >> 24) & 0xFF;
    895                                 $r = ($rgb >> 16) & 0xFF;
    896                                 $g = ($rgb >> 8) & 0xFF;
    897                                 $b = $rgb & 0xFF;
    898 
    899                                 $color = ImageColorAllocateAlpha( $im_, $r, $g, $b, $a );
    900                                 imagesetpixel ($im_, $x, $y, $color);                           }
    901                 }
    902 
    903                 $image["fonction_image"]($im_, "$dest");
    904                 imagedestroy($im_);
    905                 imagedestroy($im);
    906                 imagedestroy($im2);
    907 
    908         }
    909 
    910         $class = $image["class"];
    911         if (strlen($class) > 1) $tags=" class='$class'";
    912         $tags = "$tags alt='".$image["alt"]."'";
    913         $style = $image["style"];
    914         if (strlen($style) > 1) $tags="$tags style='$style'";
    915         return "<img src='$dest'$tags />";
    916 }
    917 
    918 
    919 
    920 
    921 
    922 /* ------------------ Autres fonctions ---------------------------- */
    92336
    92437/*
    92538 * autorise les filtres images sur les chemins.
    92639 * #CHEMIN{fichier}|en_image|image_sepia{14579c}
    927  * 
     40 *
    92841 * Cette fonction est devenue inutile en 1.9.3 [10980]
    929  * 
     42 *
    93043 */
    93144function en_image($url, $alt=''){
     
    93346}
    93447
    935 
    936 
    937 /*
    938  * Sature (ou desature) une couleur
    939  */
    940 function couleur_saturer ($coul, $val=1.2) {
    941        
    942         include_spip("inc/filtres_images");
    943         $couleurs = couleur_hex_to_dec($coul);
    944         $r= $couleurs["red"];
    945         $g= $couleurs["green"];
    946         $b= $couleurs["blue"];
    947 
    948         $hsv = image_rgb2hsv($r,$g,$b);
    949         $h = $hsv["h"];
    950         $s = $hsv["s"];
    951         $v = $hsv["v"];
    952        
    953         $s = $s * $val;
    954         if ($s > 1) $s = 1;
    955                                        
    956         $rgb = image_hsv2rgb($h,$s,$v);
    957         $r = $rgb["r"];
    958         $g = $rgb["g"];
    959         $b = $rgb["b"];
    960        
    961         $couleurs = couleur_dec_to_hex($r, $g, $b);
    962        
    963         return $couleurs;
    964 }
    965 
    966 /*
    967  * Change la teinte d'une couleur
    968  *
    969  * $val entre +/- 0 à 360
    970  */
    971 function couleur_teinter ($coul, $val=30) {
    972        
    973         include_spip("inc/filtres_images");
    974         $couleurs = couleur_hex_to_dec($coul);
    975         $r= $couleurs["red"];
    976         $g= $couleurs["green"];
    977         $b= $couleurs["blue"];
    978 
    979         $hsv = image_rgb2hsv($r,$g,$b);
    980         $h = $hsv["h"];
    981         $s = $hsv["s"];
    982         $v = $hsv["v"];
    983 
    984         $h = $h*360 + $val;
    985         $h = ($h<0)?$h+360:$h;
    986         $h = ($h % 360);
    987         $h = ($h == 0)?$h:$h/360;
    988        
    989         $rgb = image_hsv2rgb($h,$s,$v);
    990         $r = $rgb["r"];
    991         $g = $rgb["g"];
    992         $b = $rgb["b"];
    993        
    994         $couleurs = couleur_dec_to_hex($r, $g, $b);
    995        
    996         return $couleurs;
    997 }
    998 
    999 
    1000 /*
    1001  *
    1002  * Affiche un tableau avec les couleurs de l'arbre chromatique
    1003  * dont le d&eacute;coupage est pass&eacute; en param&egrave;tre.
    1004  */
    1005 function couleur_tableau_chroma($coul, $tot=6, $debut=1, $fin=0){
    1006        
    1007         include_spip("inc/filtres");
    1008         if($fin==0) $fin = $tot;
    1009        
    1010         $retour = "<div style='width:300px;'>\n";
    1011         $retour .= "<div style='background-color:#$coul; width:50px;float:left;'>$coul</div>\n";
    1012         for($pos = $debut; $pos<=$fin; $pos++){
    1013                 $cc = couleur_chroma($coul, "$pos/$tot");
    1014                 $retour .= "<div style='background-color:#$cc; width:50px;float:left;'>$cc</div>\n";
    1015         }
    1016         $retour .= "</div>\n";
    1017        
    1018         return $retour;
    1019 }
    1020 
    1021 /*
    1022  *
    1023  * D'apres http://www.easyrgb.com/math.php
    1024  */
    1025 function image_rgb2hsl($R,$G,$B) {
    1026         $var_R = ( $R / 255 );                     //Where RGB values = 0 ÷ 255
    1027         $var_G = ( $G / 255 );
    1028         $var_B = ( $B / 255 );
    1029 
    1030         $var_Min = min( $var_R, $var_G, $var_B );    //Min. value of RGB
    1031         $var_Max = max( $var_R, $var_G, $var_B );    //Max. value of RGB
    1032         $del_Max = $var_Max - $var_Min ;            //Delta RGB value
    1033 
    1034         $L = ( $var_Max + $var_Min ) / 2;
    1035 
    1036         if ( $del_Max == 0 )                     //This is a gray, no chroma...
    1037                 {
    1038                    $H = 0;                                //HSL results = 0 ÷ 1
    1039                    $S = 0;
    1040                 }
    1041         else                                    //Chromatic data...
    1042                 {
    1043                    if ( $L < 0.5 ) $S = $del_Max / ( $var_Max + $var_Min );
    1044                    else           $S = $del_Max / ( 2 - $var_Max - $var_Min );
    1045 
    1046                    $del_R = ( ( ( $var_Max - $var_R ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
    1047                    $del_G = ( ( ( $var_Max - $var_G ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
    1048                    $del_B = ( ( ( $var_Max - $var_B ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
    1049 
    1050                    if      ( $var_R == $var_Max ) $H = $del_B - $del_G;
    1051                    else if ( $var_G == $var_Max ) $H = ( 1 / 3 ) + $del_R - $del_B;
    1052                    else if ( $var_B == $var_Max ) $H = ( 2 / 3 ) + $del_G - $del_R;
    1053 
    1054                    if ( $H < 0 ) ; $H += 1;
    1055                    if ( $H > 1 ) ; $H -= 1;
    1056                 }
    1057                
    1058         $ret["h"] = $H;
    1059         $ret["s"] = $S;
    1060         $ret["l"] = $L;
    1061        
    1062         return $ret;
    1063 }
    1064 
    1065 function image_hue2rgb($v1, $v2, $vH) {
    1066    if ( $vH < 0 ) $vH += 1;
    1067    if ( $vH > 1 ) $vH -= 1;
    1068    if ( ( 6 * $vH ) < 1 ) return ( $v1 + ( $v2 - $v1 ) * 6 * $vH );
    1069    if ( ( 2 * $vH ) < 1 ) return ( $v2 );
    1070    if ( ( 3 * $vH ) < 2 ) return ( $v1 + ( $v2 - $v1 ) * ( ( 2 / 3 ) - $vH ) * 6 );
    1071    return ( $v1 );
    1072 }
    1073 
    1074 function image_hsl2rgb($H,$S,$L) {
    1075         if ( $S == 0 )                       //HSL values = 0 ÷ 1
    1076                 {
    1077                    $R = $L * 255;                      //RGB results = 0 ÷ 255
    1078                    $G = $L * 255;
    1079                    $B = $L * 255;
    1080                 }
    1081         else
    1082                 {
    1083                    if ( $L < 0.5 ) $var_2 = $L * ( 1 + $S );
    1084                    else           $var_2 = ( $L + $S ) - ( $S * $L );
    1085 
    1086                    $var_1 = 2 * $L - $var_2;
    1087 
    1088                    $R = 255 * image_hue2rgb( $var_1, $var_2, $H + ( 1 / 3 ) );
    1089                    $G = 255 * image_hue2rgb( $var_1, $var_2, $H );
    1090                    $B = 255 * image_hue2rgb( $var_1, $var_2, $H - ( 1 / 3 ) );
    1091                 }
    1092 
    1093         $ret["r"] = floor($R);
    1094         $ret["g"] = floor($G);
    1095         $ret["b"] = floor($B);
    1096        
    1097         return $ret;
    1098 }
    1099 
    1100 /*
    1101  *
    1102  * Permet d'éclaircir une couleur si elle est foncee
    1103  * ou de la foncer si elle est claire.
    1104  * La valeur par defaut est 20% (sur une echelle de 0 à 100%).
    1105  * Le troisieme parametre permet de rendre plus lumineux ou plus sombre ce qui l'est deja
    1106  */
    1107 function couleur_inverserluminosite($coul,$pourcentage=20, $intensifier=false) {
    1108         include_spip("inc/filtres_images");
    1109         $couleurs = couleur_hex_to_dec($coul);
    1110         $r= $couleurs["red"];
    1111         $g= $couleurs["green"];
    1112         $b= $couleurs["blue"];
    1113 
    1114         $hsl = image_rgb2hsl($r,$g,$b);
    1115         $h = $hsl["h"];
    1116         $s = $hsl["s"];
    1117         $l = $hsl["l"];
    1118 
    1119         if (!$intensifier) {
    1120                 if ($l < 0.5) {
    1121                         $l = $l + (1-$l)*(1-(100-$pourcentage)/100);
    1122                 } else {
    1123                         $l = $l*(1-$pourcentage/100);
    1124                 }
    1125         } else {
    1126                 if ($l >= 0.5) {
    1127                         $l = $l + (1-$l)*(1-(100-$pourcentage)/100);
    1128                 } else {
    1129                         $l = $l*(1-$pourcentage/100);
    1130                 }
    1131         }
    1132 
    1133         $rgb = image_hsl2rgb($h,$s,$l);
    1134         $r = $rgb["r"];
    1135         $g = $rgb["g"];
    1136         $b = $rgb["b"];
    1137        
    1138         $couleurs = couleur_dec_to_hex($r, $g, $b);
    1139        
    1140         return $couleurs;
    1141 }
    1142 
    1143 function couleur_foncerluminosite($coul,$pourcentage=20) {
    1144         include_spip("inc/filtres_images");
    1145         $couleurs = couleur_hex_to_dec($coul);
    1146         $r= $couleurs["red"];
    1147         $g= $couleurs["green"];
    1148         $b= $couleurs["blue"];
    1149 
    1150         $hsl = image_rgb2hsl($r,$g,$b);
    1151         $h = $hsl["h"];
    1152         $s = $hsl["s"];
    1153         $l = $hsl["l"];
    1154 
    1155         $l = $l*(1-$pourcentage/100);
    1156 
    1157         $rgb = image_hsl2rgb($h,$s,$l);
    1158         $r = $rgb["r"];
    1159         $g = $rgb["g"];
    1160         $b = $rgb["b"];
    1161        
    1162         $couleurs = couleur_dec_to_hex($r, $g, $b);
    1163        
    1164         return $couleurs;
    1165 }
    1166 
    1167 function couleur_eclaircirluminosite($coul,$pourcentage=20) {
    1168         include_spip("inc/filtres_images");
    1169         $couleurs = couleur_hex_to_dec($coul);
    1170         $r= $couleurs["red"];
    1171         $g= $couleurs["green"];
    1172         $b= $couleurs["blue"];
    1173 
    1174         $hsl = image_rgb2hsl($r,$g,$b);
    1175         $h = $hsl["h"];
    1176         $s = $hsl["s"];
    1177         $l = $hsl["l"];
    1178 
    1179         $l = $l + (1-$l)*(1-(100-$pourcentage)/100);
    1180 
    1181         $rgb = image_hsl2rgb($h,$s,$l);
    1182         $r = $rgb["r"];
    1183         $g = $rgb["g"];
    1184         $b = $rgb["b"];
    1185        
    1186         $couleurs = couleur_dec_to_hex($r, $g, $b);
    1187        
    1188         return $couleurs;
    1189 }
    1190 
    1191 //
    1192 // filtre tiré de http://reflection.corephp.co.uk
    1193 // adapté par Yohann Prigent
    1194 //
    1195 function image_reflechir($im, $hauteur=0.5, $alphastart=80, $alphaend=0, $red=127, $green=127, $blue=127){
    1196         include_spip("inc/filtres_images");
    1197         $image = image_valeurs_trans($im, "relechir-$hauteur-$alphastart-$alphaend", "png");
    1198         if (!$image) return("");
    1199         $width = $image["largeur"];
    1200         $height = $image["hauteur"];
    1201         $im = $image["fichier"];
    1202         $dest = $image["fichier_dest"];
    1203         $creer = $image["creer"];
    1204         $new_height = $height * $hauteur;
    1205         if($creer) {
    1206                 if($hauteur > $height)
    1207                         $hauteur = $height;
    1208                 $source = $image["fonction_imagecreatefrom"]($im);
    1209                 //      We'll store the final reflection in $output. $buffer is for internal use.
    1210                 $resultat = imagecreatetruecolor($width, $new_height + $height);
    1211                 $output = imagecreatetruecolor($width, $new_height);
    1212                 $buffer = imagecreatetruecolor($width, $new_height);
    1213                 //  Save any alpha data that might have existed in the source image and disable blending
    1214                 imagesavealpha($source, true);
    1215                 // alpha for output
    1216                 imagesavealpha($output, true);
    1217                 imagealphablending($output, false);
    1218                 // alpha for the buffer
    1219                 imagesavealpha($buffer, true);
    1220                 imagealphablending($buffer, false);
    1221                 // and alpha for the final result
    1222                 imagesavealpha($resultat, true);
    1223                 imagealphablending($resultat, false);
    1224                 //      Copy the bottom-most part of the source image into the output
    1225                 imagecopy($output, $source, 0, 0, 0, $height - $new_height, $width, $new_height);
    1226                 //      Rotate and flip it (strip flip method)
    1227                 for ($y = 0; $y < $new_height; $y++)
    1228                 {
    1229                         imagecopy($buffer, $output, 0, $y, 0, $new_height - $y - 1, $width, 1);
    1230                 }
    1231                 $output = $buffer;
    1232                 $alpha_length = abs($alphastart - $alphaend);
    1233                 imagelayereffect($output, IMG_EFFECT_OVERLAY);
    1234                 for ($y = 0; $y <= $new_height; $y++)
    1235                 {
    1236                         //  Get % of reflection height
    1237                         $pct = $y / $new_height;
    1238                         //  Get % of alpha
    1239                         if ($alphastart > $alphaend)
    1240                         {
    1241                                 $alpha = (int) ($alphastart - ($pct * $alpha_length));
    1242                         }
    1243                         else
    1244                         {
    1245                                 $alpha = (int) ($alphastart + ($pct * $alpha_length));
    1246                         }
    1247                         //  Rejig it because of the way in which the image effect overlay works
    1248                         $final_alpha = 127 - $alpha;
    1249                         imagefilledrectangle($output, 0, $y, $width, $y, imagecolorallocatealpha($output, $red, $green, $blue, $final_alpha));
    1250                 }
    1251                 // now, source with effect
    1252                 imagecopy($resultat, $source, 0, 0, 0, 0, $width, $height);
    1253                 imagecopy($resultat, $output, 0, $height,0, 0, $width, $height);
    1254                 $image["fonction_image"]($resultat, "$dest");
    1255                 imagedestroy($buffer);
    1256                 imagedestroy($resultat);
    1257         }
    1258         $class = $image["class"];
    1259         if (strlen($class) > 1) $tags=" class='$class'";
    1260         $tags = "$tags alt='".$image["alt"]."'";
    1261         $style = $image["style"];
    1262         if (strlen($style) > 1) $tags="$tags style='$style'";
    1263         return "<img src='$dest'$tags />";
    1264 }
    1265 
    126648?>
  • _plugins_/fonctions_images/plugin.xml

    r37621 r38932  
    66        </auteur>
    77        <lien></lien>
    8         <version>0.4</version>
     8        <version>0.5</version>
    99        <etat>stable</etat>
    1010    <description>
  • _plugins_/fonctions_images/tests_fonctions_images.html

    r18976 r38932  
    55<style type="text/css">
    66body{
    7         margin:0.5em;   
     7        margin:0.5em;
    88}
    99h1{
     
    2727}
    2828code{
    29         color:#cc6600; 
     29        color:#cc6600;
    3030}
    3131dd + code {padding-top:1em;}
     
    3636
    3737<p>Liste des filtres, avec quelques exemples.<br />
    38 Le code <code>[(&#035;CHEMIN{img/souci.jpg}|en_image)]</code> peut &ecirc;tre
    39 remplac&eacute; par <code>[(&#035;FICHIER)]</code> dans une boucle document.
     38Le code <code class="SPIP">[(&#035;CHEMIN{img/souci.jpg}|en_image)]</code> peut &ecirc;tre
     39remplac&eacute; par <code class="SPIP">[(&#035;FICHIER)]</code> dans une boucle document.
    4040</p>
    4141
    42 <p>La fonction <code>|en_image</code> n'est plus nécessaire depuis SPIP 1.9.3</p>
    43 
     42<p>La fonction <code class="SPIP">|en_image</code> n'est plus nécessaire depuis SPIP 1.9.3</p>
    4443
    4544<dl>
    4645
    47 <dt>en_image</dt>
     46<dt id="en_image">en_image</dt>
    4847<dd>convertit une adresse d'image en balise img pour
    4948        &ecirc;tre utilis&eacute;e dans les fonctions de traitement d'image de spip</dd>
    5049<dd>N'est plus n&eacute;cessaire en SPIP 1.9.3</dd>
    51 <dd><code>[(&#035;CHEMIN{img/souci.jpg}|en_image)]</code></dd>
    52 <dd>[(#CHEMIN{img/souci.jpg}|en_image)]</dd>   
    53 <dd><code>[(&#035;CHEMIN{img/souci.jpg}|en_image|image_sepia{14579c})]</code></dd>
     50<dd><code class="SPIP">[(&#035;CHEMIN{img/souci.jpg}|en_image)]</code></dd>
     51<dd>[(#CHEMIN{img/souci.jpg}|en_image)]</dd>
     52<dd><code class="SPIP">[(&#035;CHEMIN{img/souci.jpg}|en_image|image_sepia{14579c})]</code></dd>
    5453<dd>[(#CHEMIN{img/souci.jpg}|en_image|image_sepia{14579c})]</dd>
    5554
    56 
    57 <dt>couleur_chroma</dt>
    58 <dd>Donne une couleur dans la roue chromatique
     55<dt id="couleur_chroma">couleur_chroma</dt>
     56<dd>Donne une couleur dans la roue chromatique
    5957(Paris-Beyrouth : <a href="http://www.paris-beyrouth.org/Une-palette-de-couleurs">
    6058Une palette de couleurs</a>)</dd>
    61 <dd><code>#[(&#035;CHEMIN{img/souci.jpg}|en_image|couleur_extraire|couleur_chroma{3/6})]</code></dd>
     59<dd><code class="SPIP">#[(&#035;CHEMIN{img/souci.jpg}|en_image|couleur_extraire|couleur_chroma{3/6})]</code></dd>
    6260<dd>#[(#CHEMIN{img/souci.jpg}|en_image|couleur_extraire|couleur_chroma{3/6})]</dd>
    6361
    64 
    65 <dt>couleur_saturer</dt>
     62<dt id="couleur_saturer">couleur_saturer</dt>
    6663<dd> (De)sature une couleur</dd>
    67 <dd><code>#[(&#035;CHEMIN{img/souci.jpg}|en_image|couleur_extraire|couleur_saturer{1.3})]</code></dd>
     64<dd><code class="SPIP">#[(&#035;CHEMIN{img/souci.jpg}|en_image|couleur_extraire|couleur_saturer{1.3})]</code></dd>
    6865[(#SET{couleur, #[(#CHEMIN{img/souci.jpg}|en_image|couleur_extraire|couleur_saturer{1.3})]})]
    6966<dd style="color:#GET{couleur}">#GET{couleur}</dd>
    70 <dd><code>#[(&#035;CHEMIN{img/souci.jpg}|en_image|couleur_extraire|couleur_saturer{0.5})]</code></dd>
     67<dd><code class="SPIP">#[(&#035;CHEMIN{img/souci.jpg}|en_image|couleur_extraire|couleur_saturer{0.5})]</code></dd>
    7168[(#SET{couleur, #[(#CHEMIN{img/souci.jpg}|en_image|couleur_extraire|couleur_saturer{0.5})]})]
    7269<dd style="color:#GET{couleur}">#GET{couleur}</dd>
    7370
    74 
    75 
    76 <dt>couleur_teinter</dt>
     71<dt id="couleur_teinter">couleur_teinter</dt>
    7772<dd> Modifie la teinte d'une couleur</dd>
    78 <dd><code>#[(&#035;CHEMIN{img/souci.jpg}|en_image|couleur_extraire|couleur_teinter{30})]</code></dd>
     73<dd><code class="SPIP">#[(&#035;CHEMIN{img/souci.jpg}|en_image|couleur_extraire|couleur_teinter{30})]</code></dd>
    7974[(#SET{couleur, #[(#CHEMIN{img/souci.jpg}|en_image|couleur_extraire|couleur_teinter{30})]})]
    8075<dd style="color:#GET{couleur}">#GET{couleur}</dd>
    81 <dd><code>#[(&#035;CHEMIN{img/souci.jpg}|en_image|couleur_extraire|couleur_teinter{-30})]</code></dd>
     76<dd><code class="SPIP">#[(&#035;CHEMIN{img/souci.jpg}|en_image|couleur_extraire|couleur_teinter{-30})]</code></dd>
    8277[(#SET{couleur, #[(#CHEMIN{img/souci.jpg}|en_image|couleur_extraire|couleur_teinter{-30})]})]
    8378<dd style="color:#GET{couleur}">#GET{couleur}</dd>
    8479
    85 
    86 
    87 <dt>image_saturer</dt>
    88 <dd> (De)sature une image
     80<dt id="image_saturer">image_saturer</dt>
     81<dd> (De)sature une image
    8982(Paris-Beyrouth : <a href="http://www.paris-beyrouth.org/De-saturer-une-image-en-passant-en">
    9083D&eacute;saturer une image</a>)</dd>
    91 <dd><code>[(&#035;CHEMIN{img/souci.jpg}|en_image|image_saturer{1.5})]</code></dd>
     84<dd><code class="SPIP">[(&#035;CHEMIN{img/souci.jpg}|en_image|image_saturer{1.5})]</code></dd>
    9285<dd>[(#CHEMIN{img/souci.jpg}|en_image|image_saturer{1.5})]</dd>
    93 <dd><code>[(&#035;CHEMIN{img/souci.jpg}|en_image|image_saturer{0.5})]</code></dd>
     86<dd><code class="SPIP">[(&#035;CHEMIN{img/souci.jpg}|en_image|image_saturer{0.5})]</code></dd>
    9487<dd>[(#CHEMIN{img/souci.jpg}|en_image|image_saturer{0.5})]</dd>
    9588
    96 
    97 <dt>image_niveaux_gris_auto</dt>
    98 <dd> Correction automatique des niveaux
     89<dt id="image_niveaux_gris_auto">image_niveaux_gris_auto</dt>
     90<dd> Correction automatique des niveaux
    9991(Paris-Beyrouth : <a href="http://www.paris-beyrouth.org/Corriger-les-niveaux-des-images">
    10092Corriger les niveaux des images</a>)</dd>
    101 <dd><code>[(&#035;CHEMIN{img/souci.jpg}|en_image|image_niveaux_gris_auto)]</code></dd>
     93<dd><code class="SPIP">[(&#035;CHEMIN{img/souci.jpg}|en_image|image_niveaux_gris_auto)]</code></dd>
    10294<dd>[(#CHEMIN{img/souci.jpg}|en_image|image_niveaux_gris_auto)]</dd>
    10395
    104 
    105 <dt>image_podpod</dt>
    106 <dd> Rempli par la couleur indiqu&eacute;e (dd5500) la plage de niveau
    107 de gris compris entre les 2 param&egrave;tres suivants (100 et 255)
     96<dt id="image_podpod">image_podpod</dt>
     97<dd> Rempli par la couleur indiqu&eacute;e (dd5500) la plage de niveau
     98de gris compris entre les 2 param&egrave;tres suivants (100 et 255)
    10899(Paris-Beyrouth : <a href="http://www.paris-beyrouth.org/Creer-automatiquement-une">
    109100Cr&eacute;er automatiquement une publicit&eacute; podPod</a>)</dd>
    110 <dd><code>[(&#035;CHEMIN{img/souci.jpg}|en_image|image_podpod{dd5500,100,255})]</code></dd>
     101<dd><code class="SPIP">[(&#035;CHEMIN{img/souci.jpg}|en_image|image_podpod{dd5500,100,255})]</code></dd>
    111102<dd>[(#CHEMIN{img/souci.jpg}|en_image|image_podpod{dd5500,100,255})]</dd>
    112103
    113 
    114 <dt>image_courbe</dt>
    115 <dd> Changer les courbes de niveau d'une image
     104<dt id="image_courbe">image_courbe</dt>
     105<dd> Changer les courbes de niveau d'une image
    116106(Paris-Beyrouth : <a href="http://www.paris-beyrouth.org/Modifier-les-courbes-d-une-image">
    117107Modifier les courbes d'une image</a>)</dd>
    118 <dd><code>[(&#035;CHEMIN{img/souci.jpg}|en_image|image_courbe{rvb, 62=30, 193=220})]</code></dd>
    119 <dd>[(#CHEMIN{img/souci.jpg}|en_image|image_courbe{rvb, 62=30, 193=220})]</dd> 
    120 <dd><code>[(&#035;CHEMIN{img/souci.jpg}|en_image|image_courbe{rvb, 0=255, 100=0})]</code></dd>
    121 <dd>[(#CHEMIN{img/souci.jpg}|en_image|image_courbe{rvb, 0=255, 100=0})]</dd>   
    122 <dd><code>[(&#035;CHEMIN{img/souci.jpg}|en_image|image_courbe{rvb, 1=255, 100=1})]</code></dd>
     108<dd><code class="SPIP">[(&#035;CHEMIN{img/souci.jpg}|en_image|image_courbe{rvb, 62=30, 193=220})]</code></dd>
     109<dd>[(#CHEMIN{img/souci.jpg}|en_image|image_courbe{rvb, 62=30, 193=220})]</dd>
     110<dd><code class="SPIP">[(&#035;CHEMIN{img/souci.jpg}|en_image|image_courbe{rvb, 0=255, 100=0})]</code></dd>
     111<dd>[(#CHEMIN{img/souci.jpg}|en_image|image_courbe{rvb, 0=255, 100=0})]</dd>
     112<dd><code class="SPIP">[(&#035;CHEMIN{img/souci.jpg}|en_image|image_courbe{rvb, 1=255, 100=1})]</code></dd>
    123113<dd>[(#CHEMIN{img/souci.jpg}|en_image|image_courbe{rvb, 1=255, 100=1})]</dd>
    124114
    125 
    126 <dt>image_float</dt>
    127 <dd>Faire un texte qui &eacute;pouse une image
     115<dt id="image_float">image_float</dt>
     116<dd>Faire un texte qui &eacute;pouse une image
    128117(Paris-Beyrouth : <a href="http://www.paris-beyrouth.org/Un-habillage-irregulier-2">
    129118Un habillage irr&eacute;gulier</a>)</dd>
    130 <dd><code>[(&#035;CHEMIN{img/decoupe.png}|en_image|image_float{left,10,ffffff})]</code></dd>
     119<dd><code class="SPIP">[(&#035;CHEMIN{img/decoupe.png}|en_image|image_float{left,10,ffffff})]</code></dd>
    131120<dd>
    132121<p>
    133122[(#CHEMIN{img/decoupe.png}|en_image|image_float{left,10,ffffff})]
    134 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus ut 
    135 nunc eget ante ornare nonummy. Ut arcu. Duis tincidunt tincidunt quam. 
    136 In elementum blandit odio. Nullam ultrices. Nulla sem augue, mollis id, 
    137 vulputate eget, ullamcorper ultrices, purus. Aenean porttitor odio at 
    138 mauris. Mauris quis enim vitae purus dictum ultricies. Proin pharetra 
    139 lectus auctor lacus. Quisque at sem ac lectus ornare vehicula. Nunc pulvinar, 
    140 leo ut tristique auctor, felis diam gravida neque, consectetuer cursus sem 
    141 nisl ut enim. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
    142 Donec justo. Aliquam erat volutpat. Sed vel enim nec tellus suscipit 
    143 imperdiet. Maecenas sagittis, dolor id tincidunt suscipit, orci tortor 
    144 fermentum mi, id varius dolor nisi quis lectus. Quisque ante sem, molestie 
    145 a, euismod sed, tempus sit amet, mauris. Integer vel ante eget urna sagittis 
     123Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus ut
     124nunc eget ante ornare nonummy. Ut arcu. Duis tincidunt tincidunt quam.
     125In elementum blandit odio. Nullam ultrices. Nulla sem augue, mollis id,
     126vulputate eget, ullamcorper ultrices, purus. Aenean porttitor odio at
     127mauris. Mauris quis enim vitae purus dictum ultricies. Proin pharetra
     128lectus auctor lacus. Quisque at sem ac lectus ornare vehicula. Nunc pulvinar,
     129leo ut tristique auctor, felis diam gravida neque, consectetuer cursus sem
     130nisl ut enim. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
     131Donec justo. Aliquam erat volutpat. Sed vel enim nec tellus suscipit
     132imperdiet. Maecenas sagittis, dolor id tincidunt suscipit, orci tortor
     133fermentum mi, id varius dolor nisi quis lectus. Quisque ante sem, molestie
     134a, euismod sed, tempus sit amet, mauris. Integer vel ante eget urna sagittis
    146135consectetuer. Quisque ullamcorper convallis velit.
    147136
    148 Ut porta. Quisque euismod. Cras adipiscing, tellus id vestibulum ultrices, 
    149 leo erat auctor diam, vitae aliquam libero orci ac augue. Fusce vel dui. 
    150 Sed eleifend est ac mauris. Nam in leo. In hac habitasse platea dictumst. 
    151 Suspendisse hendrerit nisl at orci. Curabitur condimentum. Proin scelerisque. 
     137Ut porta. Quisque euismod. Cras adipiscing, tellus id vestibulum ultrices,
     138leo erat auctor diam, vitae aliquam libero orci ac augue. Fusce vel dui.
     139Sed eleifend est ac mauris. Nam in leo. In hac habitasse platea dictumst.
     140Suspendisse hendrerit nisl at orci. Curabitur condimentum. Proin scelerisque.
    152141Nunc eros.
    153142</p>
    154 </dd>   
    155 
    156 
    157 <dt>image_contour_alpha</dt>
    158 <dd>Tracer des contours d'une image
     143</dd>
     144
     145<dt id="image_contour_alpha">image_contour_alpha</dt>
     146<dd>Tracer des contours d'une image
    159147(Paris-Beyrouth : <a href="http://www.paris-beyrouth.org/Tracer-les-contours-de">
    160148Tracer les contours de transparence</a>)</dd>
    161 <dd><code>[(&#035;NOM_SITE_SPIP|image_typo|image_contour_alpha{ff0000,2})]</code></dd>
     149<dd><code class="SPIP">[(&#035;NOM_SITE_SPIP|image_typo|image_contour_alpha{ff0000,2})]</code></dd>
    162150<dd>[(#NOM_SITE_SPIP|image_typo{taille=30, padding=5}|image_contour_alpha{ff0000,2})]</dd>
    163 <dd><code>[(&#035;CHEMIN{img/decoupe.png}|en_image|image_contour_alpha{ff0000,2})]</code></dd>
    164 <dd>[(#CHEMIN{img/decoupe.png}|en_image|image_contour_alpha{ff0000,2})]</dd>   
    165 
    166 
    167 
    168 <dt>image_sincity</dt>
    169 <dd>D&eacute;saturation contrast&eacute;e + accentuation du rouge
     151<dd><code class="SPIP">[(&#035;CHEMIN{img/decoupe.png}|en_image|image_contour_alpha{ff0000,2})]</code></dd>
     152<dd>[(#CHEMIN{img/decoupe.png}|en_image|image_contour_alpha{ff0000,2})]</dd>
     153
     154<dt id="image_sincity">image_sincity</dt>
     155<dd>D&eacute;saturation contrast&eacute;e + accentuation du rouge
    170156(Paris-Beyrouth : <a href="http://www.paris-beyrouth.org/Welcome-to-Spip-City">
    171157Welcome to Spip-City</a>)</dd>
    172 <dd><code>[(&#035;CHEMIN{img/souci.jpg}|image_sincity)]</code></dd>
    173 <dd>[(#CHEMIN{img/souci.jpg}|image_sincity)]</dd>       
    174 
    175 
    176 
    177 <dt>image_estampage_alpha</dt>
    178 <dd>R&eacute;aliser des estampages
     158<dd><code class="SPIP">[(&#035;CHEMIN{img/souci.jpg}|image_sincity)]</code></dd>
     159<dd>[(#CHEMIN{img/souci.jpg}|image_sincity)]</dd>
     160
     161<dt id="image_estampage_alpha">image_estampage_alpha</dt>
     162<dd>R&eacute;aliser des estampages
    179163(Paris-Beyrouth : <a href="http://www.paris-beyrouth.org/Des-titres-en-relief">
    180164Des titres en relief</a>)</dd>
    181 <dd><code>[(&#035;NOM_SITE_SPIP|image_typo{couleur=8cc42a,taille=40,padding=4}<br />
     165<dd><code class="SPIP">[(&#035;NOM_SITE_SPIP|image_typo{couleur=8cc42a,taille=40,padding=4}<br />
    182166                |image_masque{[(&#035;NOM_SITE_SPIP|image_typo{couleur=8cc42a,taille=40,padding=4}<br />
    183167                |image_flou{2}|image_estampage_alpha{1,1.5}<br />
     
    186170                |image_masque{[(#NOM_SITE_SPIP|image_typo{couleur=8cc42a,taille=40,padding=4}
    187171                |image_flou{2}|image_estampage_alpha{1,1.5}
    188                 |extraire_attribut{src})],top=-1,left=-1})]</dd>       
    189 
    190 
    191 
    192 
    193 
    194 
    195 
    196 <dt>image_dispersion</dt>
     172                |extraire_attribut{src})],top=-1,left=-1})]</dd>
     173
     174<dt id="image_dispersion">image_dispersion</dt>
    197175<dd>R&eacute;aliser des dispersions, des floutages
    198176(Paris-Beyrouth : <a href="http://www.paris-beyrouth.org/Un-filtre-de-dispersion-graphique">
    199177Un filtre de dispersion graphique</a>)</dd>
    200 <dd><code>[(&#035;CHEMIN{img/souci.jpg}|image_dispersion{img/disp-points.png,4,4})]<br />
     178<dd><code class="SPIP">[(&#035;CHEMIN{img/souci.jpg}|image_dispersion{img/disp-points.png,4,4})]<br />
    201179                [(&#035;CHEMIN{img/disp-points.png}|en_image|image_recadre{200,150})]</code></dd>
    202 <dd>[(#CHEMIN{img/souci.jpg}|image_dispersion{img/disp-points.png,4,4})] 
     180<dd>[(#CHEMIN{img/souci.jpg}|image_dispersion{img/disp-points.png,4,4})]
    203181                [(#CHEMIN{img/disp-points.png}|en_image|image_recadre{200,150})]</dd>
    204        
    205 <dd><code>[(&#035;CHEMIN{img/souci.jpg}|image_dispersion{img/disp-twirl.png,8,8})]<br />
     182
     183<dd><code class="SPIP">[(&#035;CHEMIN{img/souci.jpg}|image_dispersion{img/disp-twirl.png,8,8})]<br />
    206184                [(&#035;CHEMIN{img/disp-twirl.png}|en_image|image_recadre{200,150})]</code></dd>
    207 <dd>[(#CHEMIN{img/souci.jpg}|image_dispersion{img/disp-twirl.png,8,8})] 
     185<dd>[(#CHEMIN{img/souci.jpg}|image_dispersion{img/disp-twirl.png,8,8})]
    208186                [(#CHEMIN{img/disp-twirl.png}|en_image|image_recadre{200,150})]</dd>
    209        
    210 <dd><code>[(&#035;CHEMIN{img/souci.jpg}|image_dispersion{img/disp-noir.png,6,6})]<br />
     187
     188<dd><code class="SPIP">[(&#035;CHEMIN{img/souci.jpg}|image_dispersion{img/disp-noir.png,6,6})]<br />
    211189                [(&#035;CHEMIN{img/disp-noir.png}|en_image|image_recadre{200,150})]</code></dd>
    212 <dd>[(#CHEMIN{img/souci.jpg}|image_dispersion{img/disp-noir.png,6,6})]
    213                 [(#CHEMIN{img/disp-noir.png}|en_image|image_recadre{200,150})]</dd>     
    214 
    215 
    216 <dt>couleur_inverserluminosite</dt>
     190<dd>[(#CHEMIN{img/souci.jpg}|image_dispersion{img/disp-noir.png,6,6})]
     191                [(#CHEMIN{img/disp-noir.png}|en_image|image_recadre{200,150})]</dd>
     192
     193
     194<dt id="image_negatif">image_negatif</dt>
     195<dd>Passe une image en n&eacute;gatif</dd>
     196<dd><code class="SPIP">[(&#035;CHEMIN{img/souci.jpg}|image_negatif)]</code></dd>
     197<dd>[(#CHEMIN{img/souci.jpg}|image_negatif)]</dd>
     198
     199<dt id="image_reflechir">image_reflechir</dt>
     200<dd>Passe une image en n&eacute;gatif</dd>
     201<dd><code class="SPIP">[(&#035;CHEMIN{img/souci.jpg}|image_negatif)]</code></dd>
     202<dd>Pour l'instant bugguée...</dd>
     203
     204<dt id="couleur_inverserluminosite">couleur_inverserluminosite</dt>
    217205<dd> Eclaircie une couleur fonc&eacute;e et fonce une couleur claire</dd>
    218206<dd style="color:#8746fe">#8746fe va donner</code></dd>
     
    266254<dd style="color:[(#GET{couleur})]">[(#GET{couleur})] avec |couleur_inverserluminosite{100}</dd>
    267255
    268 <dt>couleur_foncerluminosite</dt>
     256<dt id="couleur_foncerluminosite">couleur_foncerluminosite</dt>
    269257<dd> Fonce une couleur</dd>
    270258<dd style="color:#8746fe">#8746fe va donner</code></dd>
     
    304292<dd style="color:[(#GET{couleur})]">[(#GET{couleur})] avec |couleur_foncerluminosite{100}</dd>
    305293
    306 <dt>couleur_eclaircirluminosite</dt>
     294<dt id="couleur_eclaircirluminosite">couleur_eclaircirluminosite</dt>
    307295<dd> Eclaircie une couleur</dd>
    308296<dd style="color:#8746fe">#8746fe va donner</code></dd>
     
    342330<dd style="color:[(#GET{couleur})]">[(#GET{couleur})] avec |couleur_eclaircirluminosite{100}</dd>
    343331
    344 
    345332</dl>
    346333</body>
Note: See TracChangeset for help on using the changeset viewer.