Changeset 93611 in spip-zone


Ignore:
Timestamp:
Dec 13, 2015, 11:35:58 AM (5 years ago)
Author:
cedric@…
Message:

Indentation et regles de codage selon http://www.spip.net/fr_article3497.html#regles_codage

Location:
_core_/plugins/filtres_images
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/filtres_images/filtres/couleurs.php

    r93092 r93611  
    1010\***************************************************************************/
    1111
    12 if (!defined('_ECRIRE_INC_VERSION')) return;
     12if (!defined('_ECRIRE_INC_VERSION')) {
     13        return;
     14}
    1315
    1416include_spip('inc/filtres_images_lib_mini');
     
    1618/**
    1719 * Toutes les fonctions couleur_xx de ce fichier :
    18  *      - prennent une couleur hexa sur 6 caracteres en entree (les couleurs web nommees sont admises aussi)
     20 *  - prennent une couleur hexa sur 6 caracteres en entree (les couleurs web nommees sont admises aussi)
    1921 *  - fournissent une couleur hexa en sortie
    2022 *  - sont chainables les unes derrieres les autres dans toutes les combinaisons possibles
     
    2224
    2325// http://code.spip.net/@couleur_extraire
    24 function couleur_extraire ($img, $x = 10, $y = 6) {
     26function couleur_extraire($img, $x = 10, $y = 6) {
    2527        include_spip('filtres/images_lib');
     28
    2629        return _image_couleur_extraire($img, $x, $y);
    2730}
    28 
    2931
    3032
     
    3335        include_spip('filtres/images_lib');
    3436        $rvb = _couleur_hex_to_dec($couleur);
    35        
    36         $rvb = array_map('multiple_de_trois',$rvb);
    37        
    38         return _couleur_dec_to_hex($rvb['red'],$rvb['green'],$rvb['blue']);
     37
     38        $rvb = array_map('multiple_de_trois', $rvb);
     39
     40        return _couleur_dec_to_hex($rvb['red'], $rvb['green'], $rvb['blue']);
    3941}
    4042
     
    4446        $v = (substr($couleur, 2, 1));
    4547        $b = (substr($couleur, 4, 1));
    46        
     48
    4749        return "$r$r$v$v$b$b";
    4850}
     
    5052
    5153// http://code.spip.net/@couleur_extreme
    52 function couleur_extreme ($couleur, $limite = 0.5) {
     54function couleur_extreme($couleur, $limite = 0.5) {
    5355        // force la couleur au noir ou au blanc le plus proche
    5456        // -> donc couleur foncee devient noire
     
    6062        $green = $couleurs["green"];
    6163        $blue = $couleurs["blue"];
    62        
    63        
     64
     65
    6466        /*     
    6567        $moyenne = round(($red+$green+$blue)/3);
     
    7072
    7173        include_spip('filtres/images_lib');
    72         $hsl = _couleur_rgb2hsl ($red, $green, $blue);
     74        $hsl = _couleur_rgb2hsl($red, $green, $blue);
    7375
    74         if ($hsl["l"] > $limite) $couleur_texte = "ffffff";
    75         else $couleur_texte = "000000";
     76        if ($hsl["l"] > $limite) {
     77                $couleur_texte = "ffffff";
     78        } else {
     79                $couleur_texte = "000000";
     80        }
    7681
    7782        return $couleur_texte;
     
    7984
    8085// http://code.spip.net/@couleur_inverser
    81 function couleur_inverser ($couleur) {
     86function couleur_inverser($couleur) {
    8287        $couleurs = _couleur_hex_to_dec($couleur);
    83         $red = 255 - $couleurs["red"];
    84         $green = 255 - $couleurs["green"];
    85         $blue = 255 - $couleurs["blue"];
     88        $red = 255-$couleurs["red"];
     89        $green = 255-$couleurs["green"];
     90        $blue = 255-$couleurs["blue"];
    8691
    8792        $couleur = _couleur_dec_to_hex($red, $green, $blue);
    88        
     93
    8994        return $couleur;
    9095}
    9196
    9297// http://code.spip.net/@couleur_foncer_si_claire
    93 function couleur_foncer_si_claire ($couleur, $seuil = 122) {
     98function couleur_foncer_si_claire($couleur, $seuil = 122) {
    9499        // ne foncer que les couleurs claires
    95100        // utile pour ecrire sur fond blanc,
     
    99104        $green = $couleurs["green"];
    100105        $blue = $couleurs["blue"];
    101        
     106
    102107        $moyenne = round(($red+$green+$blue)/3);
    103        
     108
    104109        if ($moyenne > $seuil) {
    105110                include_spip("inc/filtres_images_mini");
     111
    106112                return couleur_foncer($couleur);
     113        } else {
     114                return $couleur;
    107115        }
    108         else return $couleur;
    109116}
    110117
    111118// http://code.spip.net/@couleur_eclaircir_si_foncee
    112 function couleur_eclaircir_si_foncee ($couleur, $seuil = 123) {
     119function couleur_eclaircir_si_foncee($couleur, $seuil = 123) {
    113120        $couleurs = _couleur_hex_to_dec($couleur);
    114121        $red = $couleurs["red"];
    115122        $green = $couleurs["green"];
    116123        $blue = $couleurs["blue"];
    117        
     124
    118125        $moyenne = round(($red+$green+$blue)/3);
    119        
     126
    120127        if ($moyenne < $seuil) {
    121128                include_spip("inc/filtres_images_mini");
     129
    122130                return couleur_eclaircir($couleur);
     131        } else {
     132                return $couleur;
    123133        }
    124         else return $couleur;
    125134}
    126135
    127136// http://code.spip.net/@couleur_saturation
    128137function couleur_saturation($couleur, $val) {
    129         if ($couleur == "ffffff") $couleur = "eeeeee";
     138        if ($couleur == "ffffff") {
     139                $couleur = "eeeeee";
     140        }
    130141
    131142        $couleurs = _couleur_hex_to_dec($couleur);
    132         $r= 255 - $couleurs["red"];
    133         $g= 255 - $couleurs["green"];
    134         $b= 255 - $couleurs["blue"];
     143        $r = 255-$couleurs["red"];
     144        $g = 255-$couleurs["green"];
     145        $b = 255-$couleurs["blue"];
    135146
    136         $max = max($r,$g,$b);
     147        $max = max($r, $g, $b);
    137148
    138         $r = 255 - $r / $max * 255 * $val;
    139         $g = 255 - $g / $max * 255 * $val;
    140         $b = 255 - $b / $max * 255 * $val;
    141        
     149        $r = 255-$r/$max*255*$val;
     150        $g = 255-$g/$max*255*$val;
     151        $b = 255-$b/$max*255*$val;
     152
    142153        $couleur = _couleur_dec_to_hex($r, $g, $b);
    143        
     154
    144155        return $couleur;
    145                
     156
    146157}
    147158
     
    151162
    152163        $couleurs = _couleur_hex_to_dec($couleur);
    153         $r= $couleurs["red"];
    154         $g= $couleurs["green"];
    155         $b= $couleurs["blue"];
     164        $r = $couleurs["red"];
     165        $g = $couleurs["green"];
     166        $b = $couleurs["blue"];
    156167
    157168        // Cas etonnant: quand gris parfait, la correction de HSL ne fonctionne pas
    158169        // en revanche, couleur_saturation retourne exactement la bonne valeur
    159         if ($r == $g && $g == $b) return couleur_saturation($couleur, $val);
     170        if ($r == $g && $g == $b) {
     171                return couleur_saturation($couleur, $val);
     172        }
    160173
    161        
     174
    162175        $couleur = _couleur_rgb2hsl($r, $g, $b);
    163176        $h = $couleur["h"];
    164177        $s = $couleur["s"];
    165178        $l = $couleur["l"];
    166        
    167         $rgb = _couleur_hsl2rgb ($h, $s, 1-$val);
     179
     180        $rgb = _couleur_hsl2rgb($h, $s, 1-$val);
    168181        $r = $rgb["r"];
    169182        $g = $rgb["g"];
    170183        $b = $rgb["b"];
    171        
     184
    172185        $retour = _couleur_dec_to_hex($r, $g, $b);
    173        
     186
    174187        return $retour;
    175188}
  • _core_/plugins/filtres_images/filtres/images_lib.php

    r93092 r93611  
    1010\***************************************************************************/
    1111
    12 if (!defined('_ECRIRE_INC_VERSION')) return;
     12if (!defined('_ECRIRE_INC_VERSION')) {
     13        return;
     14}
    1315
    1416// librairie de base du core
     
    1618
    1719function multiple_de_trois($val) {
    18         return intval(round($val / 3) * 3);
     20        return intval(round($val/3)*3);
    1921}
    2022
     
    2325 * RGB entiers entre 0 et 255
    2426 * HSV float entre 0 et 1
    25  * 
     27 *
    2628 * @param int $R
    2729 * @param int $G
     
    2931 * @return array
    3032 */
    31 function _couleur_rgb2hsv ($R, $G, $B) {
    32         $var_R = ( $R / 255 ) ;                    //Where RGB values = 0 ÷ 255
    33         $var_G = ( $G / 255 );
    34         $var_B = ( $B / 255 );
    35 
    36         $var_Min = min( $var_R, $var_G, $var_B ) ;   //Min. value of RGB
    37         $var_Max = max( $var_R, $var_G, $var_B ) ;   //Max. value of RGB
    38         $del_Max = $var_Max - $var_Min  ;           //Delta RGB value
     33function _couleur_rgb2hsv($R, $G, $B) {
     34        $var_R = ($R/255);                    //Where RGB values = 0 ÷ 255
     35        $var_G = ($G/255);
     36        $var_B = ($B/255);
     37
     38        $var_Min = min($var_R, $var_G, $var_B);   //Min. value of RGB
     39        $var_Max = max($var_R, $var_G, $var_B);   //Max. value of RGB
     40        $del_Max = $var_Max-$var_Min;           //Delta RGB value
    3941
    4042        $V = $var_Max;
    41         $L = ( $var_Max + $var_Min ) / 2;
    42        
    43         if ( $del_Max == 0 )                     //This is a gray, no chroma...
    44         {
    45            $H = 0 ;                            //HSL results = 0 ÷ 1
    46            $S = 0 ;
    47         }
    48         else                                    //Chromatic data...
    49         {
    50            $S = $del_Max / $var_Max;
    51        
    52            $del_R = ( ( ( $var_Max - $var_R ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
    53            $del_G = ( ( ( $var_Max - $var_G ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
    54            $del_B = ( ( ( $var_Max - $var_B ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
    55        
    56            if      ( $var_R == $var_Max ) $H = $del_B - $del_G;
    57            else if ( $var_G == $var_Max ) $H = ( 1 / 3 ) + $del_R - $del_B;
    58            else if ( $var_B == $var_Max ) $H = ( 2 / 3 ) + $del_G - $del_R;
    59        
    60            if ( $H < 0 )  $H =  $H + 1;
    61            if ( $H > 1 )  $H = $H - 1;
    62         }
    63                                
     43        $L = ($var_Max+$var_Min)/2;
     44
     45        if ($del_Max == 0)                     //This is a gray, no chroma...
     46        {
     47                $H = 0;                            //HSL results = 0 ÷ 1
     48                $S = 0;
     49        } else                                    //Chromatic data...
     50        {
     51                $S = $del_Max/$var_Max;
     52
     53                $del_R = ((($var_Max-$var_R)/6)+($del_Max/2))/$del_Max;
     54                $del_G = ((($var_Max-$var_G)/6)+($del_Max/2))/$del_Max;
     55                $del_B = ((($var_Max-$var_B)/6)+($del_Max/2))/$del_Max;
     56
     57                if ($var_R == $var_Max) {
     58                        $H = $del_B-$del_G;
     59                } else {
     60                        if ($var_G == $var_Max) {
     61                                $H = (1/3)+$del_R-$del_B;
     62                        } else {
     63                                if ($var_B == $var_Max) {
     64                                        $H = (2/3)+$del_G-$del_R;
     65                                }
     66                        }
     67                }
     68
     69                if ($H < 0) {
     70                        $H = $H+1;
     71                }
     72                if ($H > 1) {
     73                        $H = $H-1;
     74                }
     75        }
     76
    6477        $ret["h"] = $H;
    6578        $ret["s"] = $S;
    6679        $ret["v"] = $V;
    67        
     80
    6881        return $ret;
    6982}
     
    7386 * HSV float entre 0 et 1
    7487 * RGB entiers entre 0 et 255
    75  * 
     88 *
    7689 * @param float $H
    7790 * @param float $S
     
    7992 * @return array
    8093 */
    81 function _couleur_hsv2rgb ($H, $S, $V) {
    82        
    83         if ( $S == 0 )                       //HSV values = 0 ÷ 1
    84         {
    85            $R = $V * 255;
    86            $G = $V * 255;
    87            $B = $V * 255;
    88         }
    89         else
    90         {
    91            $var_h = $H * 6;
    92            if ( $var_h == 6 ) $var_h = 0 ;     //H must be < 1
    93            $var_i = floor( $var_h )  ;           //Or ... var_i = floor( var_h )
    94            $var_1 = $V * ( 1 - $S );
    95            $var_2 = $V * ( 1 - $S * ( $var_h - $var_i ) );
    96            $var_3 = $V * ( 1 - $S * ( 1 - ( $var_h - $var_i ) ) );
    97        
    98        
    99            if      ( $var_i == 0 ) { $var_r = $V     ; $var_g = $var_3 ; $var_b = $var_1 ; }
    100            else if ( $var_i == 1 ) { $var_r = $var_2 ; $var_g = $V     ; $var_b = $var_1 ; }
    101            else if ( $var_i == 2 ) { $var_r = $var_1 ; $var_g = $V     ; $var_b = $var_3 ; }
    102            else if ( $var_i == 3 ) { $var_r = $var_1 ; $var_g = $var_2 ; $var_b = $V ;     }
    103            else if ( $var_i == 4 ) { $var_r = $var_3 ; $var_g = $var_1 ; $var_b = $V ; }
    104            else                   { $var_r = $V     ; $var_g = $var_1 ; $var_b = $var_2; }
    105        
    106            $R = $var_r * 255;                  //RGB results = 0 ÷ 255
    107            $G = $var_g * 255;
    108            $B = $var_b * 255;
     94function _couleur_hsv2rgb($H, $S, $V) {
     95
     96        if ($S == 0)                       //HSV values = 0 ÷ 1
     97        {
     98                $R = $V*255;
     99                $G = $V*255;
     100                $B = $V*255;
     101        } else {
     102                $var_h = $H*6;
     103                if ($var_h == 6) {
     104                        $var_h = 0;
     105                }     //H must be < 1
     106                $var_i = floor($var_h);           //Or ... var_i = floor( var_h )
     107                $var_1 = $V*(1-$S);
     108                $var_2 = $V*(1-$S*($var_h-$var_i));
     109                $var_3 = $V*(1-$S*(1-($var_h-$var_i)));
     110
     111
     112                if ($var_i == 0) {
     113                        $var_r = $V;
     114                        $var_g = $var_3;
     115                        $var_b = $var_1;
     116                } else {
     117                        if ($var_i == 1) {
     118                                $var_r = $var_2;
     119                                $var_g = $V;
     120                                $var_b = $var_1;
     121                        } else {
     122                                if ($var_i == 2) {
     123                                        $var_r = $var_1;
     124                                        $var_g = $V;
     125                                        $var_b = $var_3;
     126                                } else {
     127                                        if ($var_i == 3) {
     128                                                $var_r = $var_1;
     129                                                $var_g = $var_2;
     130                                                $var_b = $V;
     131                                        } else {
     132                                                if ($var_i == 4) {
     133                                                        $var_r = $var_3;
     134                                                        $var_g = $var_1;
     135                                                        $var_b = $V;
     136                                                } else {
     137                                                        $var_r = $V;
     138                                                        $var_g = $var_1;
     139                                                        $var_b = $var_2;
     140                                                }
     141                                        }
     142                                }
     143                        }
     144                }
     145
     146                $R = $var_r*255;                  //RGB results = 0 ÷ 255
     147                $G = $var_g*255;
     148                $B = $var_b*255;
    109149        }
    110150        $ret["r"] = floor($R);
    111151        $ret["g"] = floor($G);
    112152        $ret["b"] = floor($B);
    113        
     153
    114154        return $ret;
    115155}
     
    120160 * HSL float entre 0 et 1
    121161 * RGB entiers entre 0 et 255
    122  * 
     162 *
    123163 * @param int $R
    124164 * @param int $G
     
    126166 * @return array
    127167 */
    128 function _couleur_rgb2hsl ($R, $G, $B) {
    129         $var_R = ( $R / 255 ) ;                    //Where RGB values = 0 ÷ 255
    130         $var_G = ( $G / 255 );
    131         $var_B = ( $B / 255 );
    132 
    133         $var_Min = min( $var_R, $var_G, $var_B ) ;   //Min. value of RGB
    134         $var_Max = max( $var_R, $var_G, $var_B ) ;   //Max. value of RGB
    135         $del_Max = $var_Max - $var_Min  ;           //Delta RGB value
    136 
    137         $L = ( $var_Max + $var_Min ) / 2;
    138        
    139         if ( $del_Max == 0 )                     //This is a gray, no chroma...
    140         {
    141            $H = 0 ;                            //HSL results = 0 ÷ 1
    142            $S = 0 ;
    143         }
    144         else                                    //Chromatic data...
    145         {
    146                 if ($L < 0.5 ) $S = $del_Max / ( $var_Max+ $var_Min);
    147                 else $S = $del_Max/ ( 2 - $var_Max - $var_Min);
    148 
    149                 $del_R = ( ( ( $var_Max- $var_R) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
    150                 $del_G = ( ( ( $var_Max- $var_G) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
    151                 $del_B = ( ( ( $var_Max- $var_B) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
    152 
    153                 if ( $var_R == $var_Max) $H= $del_B - $del_G;
    154                 else if ( $var_G == $var_Max) $H= ( 1 / 3 ) + $del_R - $del_B;
    155                 else if ( $var_B == $var_Max) $H= ( 2 / 3 ) + $del_G - $del_R;
    156 
    157                 if ( $H < 0 ) $H+= 1;
    158                 if ( $H > 1 ) $H-= 1;
    159         }
    160                                
     168function _couleur_rgb2hsl($R, $G, $B) {
     169        $var_R = ($R/255);                    //Where RGB values = 0 ÷ 255
     170        $var_G = ($G/255);
     171        $var_B = ($B/255);
     172
     173        $var_Min = min($var_R, $var_G, $var_B);   //Min. value of RGB
     174        $var_Max = max($var_R, $var_G, $var_B);   //Max. value of RGB
     175        $del_Max = $var_Max-$var_Min;           //Delta RGB value
     176
     177        $L = ($var_Max+$var_Min)/2;
     178
     179        if ($del_Max == 0)                     //This is a gray, no chroma...
     180        {
     181                $H = 0;                            //HSL results = 0 ÷ 1
     182                $S = 0;
     183        } else                                    //Chromatic data...
     184        {
     185                if ($L < 0.5) {
     186                        $S = $del_Max/($var_Max+$var_Min);
     187                } else {
     188                        $S = $del_Max/(2-$var_Max-$var_Min);
     189                }
     190
     191                $del_R = ((($var_Max-$var_R)/6)+($del_Max/2))/$del_Max;
     192                $del_G = ((($var_Max-$var_G)/6)+($del_Max/2))/$del_Max;
     193                $del_B = ((($var_Max-$var_B)/6)+($del_Max/2))/$del_Max;
     194
     195                if ($var_R == $var_Max) {
     196                        $H = $del_B-$del_G;
     197                } else {
     198                        if ($var_G == $var_Max) {
     199                                $H = (1/3)+$del_R-$del_B;
     200                        } else {
     201                                if ($var_B == $var_Max) {
     202                                        $H = (2/3)+$del_G-$del_R;
     203                                }
     204                        }
     205                }
     206
     207                if ($H < 0) {
     208                        $H += 1;
     209                }
     210                if ($H > 1) {
     211                        $H -= 1;
     212                }
     213        }
     214
    161215        $ret["h"] = $H;
    162216        $ret["s"] = $S;
    163217        $ret["l"] = $L;
    164        
     218
    165219        return $ret;
    166220}
    167221
    168222/**
    169  * Calcul d'une composante R, G ou B 
     223 * Calcul d'une composante R, G ou B
    170224 *
    171225 * @param unknown_type $v1
     
    174228 * @return float
    175229 */
    176 function hue_2_rgb( $v1, $v2, $vH ) {
    177    if ( $vH < 0 ) $vH += 1;
    178    if ( $vH > 1 ) $vH -= 1;
    179    if ( ( 6 * $vH ) < 1 ) return ( $v1 + ( $v2 - $v1 ) * 6 * $vH );
    180    if ( ( 2 * $vH ) < 1 ) return ( $v2 );
    181    if ( ( 3 * $vH ) < 2 ) return ( $v1 + ( $v2 - $v1 ) * ( ( 2 / 3 ) - $vH ) * 6 );
    182    return ( $v1 );
     230function hue_2_rgb($v1, $v2, $vH) {
     231        if ($vH < 0) {
     232                $vH += 1;
     233        }
     234        if ($vH > 1) {
     235                $vH -= 1;
     236        }
     237        if ((6*$vH) < 1) {
     238                return ($v1+($v2-$v1)*6*$vH);
     239        }
     240        if ((2*$vH) < 1) {
     241                return ($v2);
     242        }
     243        if ((3*$vH) < 2) {
     244                return ($v1+($v2-$v1)*((2/3)-$vH)*6);
     245        }
     246
     247        return ($v1);
    183248}
    184249
     
    194259 * @return array
    195260 */
    196 function _couleur_hsl2rgb ($H, $S, $L) {
    197        
    198         if ( $S == 0 )                       //HSV values = 0 -> 1
    199         {
    200            $R = $L * 255;
    201            $G = $L * 255;
    202            $B = $L * 255;
    203         }
    204         else
    205         {
    206                 if ( $L < 0.5 ) $var_2 = $L * ( 1 + $S );
    207                 else            $var_2 = ( $L + $S ) - ( $S * $L );
    208 
    209                 $var_1 = 2 * $L - $var_2;
    210 
    211                 $R = 255 * hue_2_rgb( $var_1, $var_2, $H + ( 1 / 3 ) ) ;
    212                 $G = 255 * hue_2_rgb( $var_1, $var_2, $H );
    213                 $B = 255 * hue_2_rgb( $var_1, $var_2, $H - ( 1 / 3 ) );
     261function _couleur_hsl2rgb($H, $S, $L) {
     262
     263        if ($S == 0)                       //HSV values = 0 -> 1
     264        {
     265                $R = $L*255;
     266                $G = $L*255;
     267                $B = $L*255;
     268        } else {
     269                if ($L < 0.5) {
     270                        $var_2 = $L*(1+$S);
     271                } else {
     272                        $var_2 = ($L+$S)-($S*$L);
     273                }
     274
     275                $var_1 = 2*$L-$var_2;
     276
     277                $R = 255*hue_2_rgb($var_1, $var_2, $H+(1/3));
     278                $G = 255*hue_2_rgb($var_1, $var_2, $H);
     279                $B = 255*hue_2_rgb($var_1, $var_2, $H-(1/3));
    214280        }
    215281        $ret["r"] = floor($R);
    216282        $ret["g"] = floor($G);
    217283        $ret["b"] = floor($B);
    218        
     284
    219285        return $ret;
    220286}
     
    229295function _image_couleur_extraire($img, $x = 10, $y = 6) {
    230296        static $couleur_extraite = array();
    231        
    232         if (isset($couleur_extraite["$img-$x-$y"]))
     297
     298        if (isset($couleur_extraite["$img-$x-$y"])) {
    233299                return $couleur_extraite["$img-$x-$y"];
     300        }
    234301
    235302        // valeur par defaut si l'image ne peut etre lue
     
    237304
    238305        $cache = _image_valeurs_trans($img, "coul-$x-$y", "txt");
    239         if (!$cache)
     306        if (!$cache) {
    240307                return $couleur_extraite["$img-$x-$y"] = $defaut;
    241 
    242        
    243         $fichier = $cache["fichier"];   
     308        }
     309
     310
     311        $fichier = $cache["fichier"];
    244312        $dest = $cache["fichier_dest"];
    245313
    246         if (isset($couleur_extraite["$fichier-$x-$y"]))
     314        if (isset($couleur_extraite["$fichier-$x-$y"])) {
    247315                return $couleur_extraite["$fichier-$x-$y"];
    248        
     316        }
     317
    249318        $creer = $cache["creer"];
    250        
     319
    251320        if ($creer) {
    252321                if (@file_exists($fichier)) {
    253322                        $width = $cache["largeur"];
    254323                        $height = $cache["hauteur"];
    255                
     324
    256325                        $newwidth = 20;
    257326                        $newheight = 20;
    258                
     327
    259328                        $thumb = imagecreate($newwidth, $newheight);
    260329
    261330                        $source = $cache["fonction_imagecreatefrom"]($fichier);
    262                        
     331
    263332                        imagepalettetotruecolor($source);
    264333
     
    271340                                // make it human readable
    272341                                $color_tran = imagecolorsforindex($thumb, $color_index);
    273                                 $x++; $y++;
    274                         } while ($color_tran['alpha']==127 AND $x<$newwidth AND $y<$newheight);
    275                        
     342                                $x++;
     343                                $y++;
     344                        } while ($color_tran['alpha'] == 127 AND $x < $newwidth AND $y < $newheight);
     345
    276346                        $couleur = _couleur_dec_to_hex($color_tran["red"], $color_tran["green"], $color_tran["blue"]);
    277                 }
    278                 else {
     347                } else {
    279348                        $couleur = $defaut;
    280349                }
    281                
     350
    282351                // Mettre en cache le resultat
    283352                $couleur_extraite["$fichier-$x-$y"] = $couleur;
    284                 ecrire_fichier($dest,$couleur_extraite["$fichier-$x-$y"]);
    285         }
    286         else {
    287                 lire_fichier($dest,$couleur_extraite["$fichier-$x-$y"]);
    288         }
    289        
    290         return $couleur_extraite["$img-$x-$y"]=$couleur_extraite["$fichier-$x-$y"];
     353                ecrire_fichier($dest, $couleur_extraite["$fichier-$x-$y"]);
     354        } else {
     355                lire_fichier($dest, $couleur_extraite["$fichier-$x-$y"]);
     356        }
     357
     358        return $couleur_extraite["$img-$x-$y"] = $couleur_extraite["$fichier-$x-$y"];
    291359}
    292360
     
    298366// et j'ai ajoute la ponderation par la distance au pixel)
    299367function _image_distance_pixel($xo, $yo, $x0, $y0) {
    300         $vx = $xo - $x0;
    301         $vy = $yo - $y0;
    302         $d = 1 - (sqrt(($vx)*($vx) + ($vy)*($vy)) / sqrt(2));
     368        $vx = $xo-$x0;
     369        $vy = $yo-$y0;
     370        $d = 1-(sqrt(($vx)*($vx)+($vy)*($vy))/sqrt(2));
     371
    303372        return $d;
    304373}
     
    314383 */
    315384function _image_decale_composante($coul, $gamma) {
    316         $coul = $coul + $gamma;
    317        
    318         if ($coul > 255) $coul = 255;
    319         if ($coul < 0) $coul = 0;
     385        $coul = $coul+$gamma;
     386
     387        if ($coul > 255) {
     388                $coul = 255;
     389        }
     390        if ($coul < 0) {
     391                $coul = 0;
     392        }
     393
    320394        return $coul;
    321395}
     
    324398 * Decalage d'une composante de couleur en sepia
    325399 * entier de 0 a 255
    326  * 
     400 *
    327401 * @param int $coul
    328402 * @param int $val
     
    330404 */
    331405function _image_decale_composante_127($coul, $val) {
    332         if ($coul < 127) $y = round((($coul - 127) / 127) * $val) + $val;
    333         else if ($coul >= 127) $y = round((($coul - 127) / 128) * (255-$val)) + $val;
    334         else $y= $coul;
    335        
    336         if ($y < 0) $y = 0;
    337         if ($y > 255) $y = 255;
     406        if ($coul < 127) {
     407                $y = round((($coul-127)/127)*$val)+$val;
     408        } else {
     409                if ($coul >= 127) {
     410                        $y = round((($coul-127)/128)*(255-$val))+$val;
     411                } else {
     412                        $y = $coul;
     413                }
     414        }
     415
     416        if ($y < 0) {
     417                $y = 0;
     418        }
     419        if ($y > 255) {
     420                $y = 255;
     421        }
     422
    338423        return $y;
    339424}
  • _core_/plugins/filtres_images/filtres/images_transforme.php

    r93466 r93611  
    1919 */
    2020
    21 if (!defined('_ECRIRE_INC_VERSION')) return;
     21if (!defined('_ECRIRE_INC_VERSION')) {
     22        return;
     23}
    2224
    2325// librairie de base du core
     
    3436// 3/ $transparence a "true" permet de conserver la transparence (utile pour conversion GIF)
    3537// http://code.spip.net/@image_aplatir
    36 function image_aplatir($im, $format = 'jpg', $coul = '000000', $qualite = NULL, $transparence = false)
    37 {
    38         if ($qualite===NULL){
    39                 if ($format=='jpg') $qualite=_IMG_GD_QUALITE;
    40                 elseif ($format=='png') $qualite=0;
    41                 else $qualite=128;
     38function image_aplatir($im, $format = 'jpg', $coul = '000000', $qualite = null, $transparence = false) {
     39        if ($qualite === null) {
     40                if ($format == 'jpg') {
     41                        $qualite = _IMG_GD_QUALITE;
     42                } elseif ($format == 'png') {
     43                        $qualite = 0;
     44                } else {
     45                        $qualite = 128;
     46                }
    4247        }
    4348        $fonction = array('image_aplatir', func_get_args());
    4449        $image = _image_valeurs_trans($im, "aplatir-$format-$coul-$qualite-$transparence", $format, $fonction);
    4550
    46         if (!$image) return("");
     51        if (!$image) {
     52                return ("");
     53        }
    4754
    4855        include_spip('inc/filtres');
    4956        $couleurs = _couleur_hex_to_dec($coul);
    50         $dr= $couleurs["red"];
    51         $dv= $couleurs["green"];
    52         $db= $couleurs["blue"];
     57        $dr = $couleurs["red"];
     58        $dv = $couleurs["green"];
     59        $db = $couleurs["blue"];
    5360
    5461        $x_i = $image["largeur"];
    5562        $y_i = $image["hauteur"];
    56        
     63
    5764        $im = $image["fichier"];
    5865        $dest = $image["fichier_dest"];
    59        
     66
    6067        $creer = $image["creer"];
    6168
     
    6471                imagepalettetotruecolor($im);
    6572                $im_ = imagecreatetruecolor($x_i, $y_i);
    66                 if ($image["format_source"] == "gif" AND function_exists('ImageCopyResampled')) { 
     73                if ($image["format_source"] == "gif" AND function_exists('ImageCopyResampled')) {
    6774                        // Si un GIF est transparent,
    6875                        // fabriquer un PNG transparent 
    6976                        // Conserver la transparence
    70                         @imagealphablending($im_, false);
    71                         @imagesavealpha($im_,true);
    72                         if (function_exists("imageAntiAlias")) imageAntiAlias($im_,true);
     77                        @imagealphablending($im_, false);
     78                        @imagesavealpha($im_, true);
     79                        if (function_exists("imageAntiAlias")) {
     80                                imageAntiAlias($im_, true);
     81                        }
    7382                        @ImageCopyResampled($im_, $im, 0, 0, 0, 0, $x_i, $y_i, $x_i, $y_i);
    7483                        imagedestroy($im);
    7584                        $im = $im_;
    7685                }
    77                
     86
    7887                // allouer la couleur de fond
    7988                if ($transparence) {
    80                         @imagealphablending($im_, false);
    81                         @imagesavealpha($im_,true);
    82                         $color_t = imagecolorallocatealpha( $im_, $dr, $dv, $db, 127);
    83                 }
    84                 else $color_t = ImageColorAllocate( $im_, $dr, $dv, $db);
    85                
    86                 imagefill ($im_, 0, 0, $color_t);
     89                        @imagealphablending($im_, false);
     90                        @imagesavealpha($im_, true);
     91                        $color_t = imagecolorallocatealpha($im_, $dr, $dv, $db, 127);
     92                } else {
     93                        $color_t = ImageColorAllocate($im_, $dr, $dv, $db);
     94                }
     95
     96                imagefill($im_, 0, 0, $color_t);
    8797
    8898                //??
    8999                //$dist = abs($trait);
    90                
     100
    91101                $transp_x = false;
    92                
     102
    93103                if ($image["format_source"] == "jpg") {
    94104                        $im_ = &$im;
    95                 }
    96                 else {
     105                } else {
    97106                        for ($x = 0; $x < $x_i; $x++) {
    98                                 for ($y=0; $y < $y_i; $y++) {
     107                                for ($y = 0; $y < $y_i; $y++) {
    99108
    100109                                        $rgb = ImageColorAt($im, $x, $y);
     
    104113                                        $b = $rgb & 0xFF;
    105114
    106                                         $a = (127-$a) / 127;
     115                                        $a = (127-$a)/127;
    107116
    108117                                        if ($a == 1) { // Limiter calculs
     
    110119                                                $g = $g;
    111120                                                $b = $b;
     121                                        } else {
     122                                                if ($a == 0) { // Limiter calculs
     123                                                        $r = $dr;
     124                                                        $g = $dv;
     125                                                        $b = $db;
     126
     127                                                        $transp_x = $x; // Memoriser un point transparent
     128                                                        $transp_y = $y;
     129
     130                                                } else {
     131                                                        $r = round($a*$r+$dr*(1-$a));
     132                                                        $g = round($a*$g+$dv*(1-$a));
     133                                                        $b = round($a*$b+$db*(1-$a));
     134                                                }
    112135                                        }
    113                                         else if ($a == 0) { // Limiter calculs
    114                                                 $r = $dr;
    115                                                 $g = $dv;
    116                                                 $b = $db;
    117 
    118                                                 $transp_x = $x; // Memoriser un point transparent
    119                                                 $transp_y = $y;
    120 
    121                                         } else {
    122                                                 $r = round($a * $r + $dr * (1-$a));
    123                                                 $g = round($a * $g + $dv * (1-$a));
    124                                                 $b = round($a * $b + $db * (1-$a));
    125                                         }
    126                                         $a = (1-$a) *127;
    127                                         $color = ImageColorAllocateAlpha( $im_, $r, $g, $b, $a);
    128                                         imagesetpixel ($im_, $x, $y, $color);
     136                                        $a = (1-$a)*127;
     137                                        $color = ImageColorAllocateAlpha($im_, $r, $g, $b, $a);
     138                                        imagesetpixel($im_, $x, $y, $color);
    129139                                }
    130140                        }
    131141                }
    132142                // passer en palette si besoin
    133                 if ($format=='gif' OR ($format=='png' AND $qualite!==0)){
     143                if ($format == 'gif' OR ($format == 'png' AND $qualite !== 0)) {
    134144                        // creer l'image finale a palette
    135145                        // (on recycle l'image initiale si possible, sinon on en recree une)
    136                         if ($im===$im_)
     146                        if ($im === $im_) {
    137147                                $im = imagecreatetruecolor($x_i, $y_i);
    138 
    139                         @imagetruecolortopalette($im,true,$qualite);
     148                        }
     149
     150                        @imagetruecolortopalette($im, true, $qualite);
    140151
    141152
     
    145156                        // matcher les couleurs au mieux par rapport a l'image initiale
    146157                        // si la fonction est disponible (php>=4.3)
    147                         if (function_exists('imagecolormatch'))
     158                        if (function_exists('imagecolormatch')) {
    148159                                @imagecolormatch($im_, $im);
    149                                
    150                         if ($format=='gif' && $transparence && $transp_x) {     
    151                                 $color_t = ImagecolorAt( $im, $transp_x, $transp_y);
    152                                 if ($format == "gif" && $transparence) @imagecolortransparent($im, $color_t);
    153                         }
    154                                
    155                                
     160                        }
     161
     162                        if ($format == 'gif' && $transparence && $transp_x) {
     163                                $color_t = ImagecolorAt($im, $transp_x, $transp_y);
     164                                if ($format == "gif" && $transparence) {
     165                                        @imagecolortransparent($im, $color_t);
     166                                }
     167                        }
     168
     169
    156170                        // produire le resultat
    157171                        _image_gd_output($im, $image, $qualite);
    158                 }
    159                 else
     172                } else {
    160173                        _image_gd_output($im_, $image, $qualite);
    161                 if ($im!==$im_)
     174                }
     175                if ($im !== $im_) {
    162176                        imagedestroy($im);
     177                }
    163178                imagedestroy($im_);
    164179        }
    165         return _image_ecrire_tag($image,array('src'=>$dest));
     180
     181        return _image_ecrire_tag($image, array('src' => $dest));
    166182}
    167183
     
    173189function image_format($img, $format = 'png') {
    174190        $qualite = null;
    175         if ($format=='png8') {$format='png';$qualite=128;}
     191        if ($format == 'png8') {
     192                $format = 'png';
     193                $qualite = 128;
     194        }
     195
    176196        return image_aplatir($img, $format, 'cccccc', $qualite, true);
    177197}
     
    182202// alpha = 127: completement transparent
    183203// http://code.spip.net/@image_alpha
    184 function image_alpha($im, $alpha = 63)
    185 {
     204function image_alpha($im, $alpha = 63) {
    186205        $fonction = array('image_alpha', func_get_args());
    187         $image = _image_valeurs_trans($im, "alpha-$alpha", "png",$fonction);
    188         if (!$image) return("");
    189        
     206        $image = _image_valeurs_trans($im, "alpha-$alpha", "png", $fonction);
     207        if (!$image) {
     208                return ("");
     209        }
     210
    190211        $x_i = $image["largeur"];
    191212        $y_i = $image["hauteur"];
    192        
     213
    193214        $im = $image["fichier"];
    194215        $dest = $image["fichier_dest"];
    195        
     216
    196217        $creer = $image["creer"];
    197        
     218
    198219        if ($creer) {
    199220                // Creation de l'image en deux temps
     
    203224                $im2 = imagecreatetruecolor($x_i, $y_i);
    204225                @imagealphablending($im2, false);
    205                 @imagesavealpha($im2,true);
    206                 $color_t = ImageColorAllocateAlpha( $im2, 255, 255, 255 , 127 );
    207                 imagefill ($im2, 0, 0, $color_t);
     226                @imagesavealpha($im2, true);
     227                $color_t = ImageColorAllocateAlpha($im2, 255, 255, 255, 127);
     228                imagefill($im2, 0, 0, $color_t);
    208229                imagecopy($im2, $im, 0, 0, 0, 0, $x_i, $y_i);
    209230
    210231                $im_ = imagecreatetruecolor($x_i, $y_i);
    211                 imagealphablending ($im_, FALSE );
    212                 imagesavealpha ( $im_, TRUE );
    213 
     232                imagealphablending($im_, false);
     233                imagesavealpha($im_, true);
    214234
    215235
     
    217237                        for ($y = 0; $y < $y_i; $y++) {
    218238                                $rgb = ImageColorAt($im2, $x, $y);
    219                                
     239
    220240                                if (function_exists('imagecolorallocatealpha')) {
    221241                                        $a = ($rgb >> 24) & 0xFF;
     
    223243                                        $g = ($rgb >> 8) & 0xFF;
    224244                                        $b = $rgb & 0xFF;
    225                                        
    226                                        
    227                                         $a_ = $alpha + $a - round($a*$alpha/127);
     245
     246
     247                                        $a_ = $alpha+$a-round($a*$alpha/127);
    228248                                        $rgb = imagecolorallocatealpha($im_, $r, $g, $b, $a_);
    229249                                }
    230                                 imagesetpixel ( $im_, $x, $y, $rgb );
    231                         }
    232                 }
    233                 _image_gd_output($im_,$image);
     250                                imagesetpixel($im_, $x, $y, $rgb);
     251                        }
     252                }
     253                _image_gd_output($im_, $image);
    234254                imagedestroy($im_);
    235255                imagedestroy($im);
     
    237257        }
    238258
    239         return _image_ecrire_tag($image,array('src'=>$dest));
     259        return _image_ecrire_tag($image, array('src' => $dest));
    240260}
    241261
     
    252272 *     - `[(#FICHIER|image_recadre{16:9})]`
    253273 *     - `[(#FICHIER|image_recadre{16:9, -})]` (- est appliqué par défaut, équivalent à image_passe_partout)
    254  *     - `[(#FICHIER|image_recadre{16:9, +, center, white})]` 
     274 *     - `[(#FICHIER|image_recadre{16:9, +, center, white})]`
    255275 *     - `[(#FICHIER|image_recadre{16:9, -, top left})]`
    256276 *     - `[(#FICHIER|image_recadre{16:9, -, top=40 left=20})]`
     
    261281 * @uses _image_ecrire_tag()
    262282 * @link http://www.spip.net/5786
    263  * 
     283 *
    264284 * @param string $im
    265285 *     Chemin de l'image ou balise html `<img src=... />`
     
    281301 *     balise image recadrée
    282302 */
    283 function image_recadre($im, $width, $height, $position = 'center', $background_color = 'white')
    284 {
     303function image_recadre($im, $width, $height, $position = 'center', $background_color = 'white') {
    285304        $fonction = array('image_recadre', func_get_args());
    286         $image = _image_valeurs_trans($im, "recadre-$width-$height-$position-$background_color",false,$fonction);
    287 
    288         if (!$image) return("");
    289        
     305        $image = _image_valeurs_trans($im, "recadre-$width-$height-$position-$background_color", false, $fonction);
     306
     307        if (!$image) {
     308                return ("");
     309        }
     310
    290311        $x_i = $image["largeur"];
    291312        $y_i = $image["hauteur"];
    292313
    293         if (_IMG_GD_MAX_PIXELS && $x_i*$y_i>_IMG_GD_MAX_PIXELS){
    294                 spip_log("image_recadre impossible sur $im : ".$srcWidth*$srcHeight."pixels");
     314        if (_IMG_GD_MAX_PIXELS && $x_i*$y_i > _IMG_GD_MAX_PIXELS) {
     315                spip_log("image_recadre impossible sur $im : " . $srcWidth*$srcHeight . "pixels");
     316
    295317                // on se rabat sur une reduction CSS
    296                 return _image_tag_changer_taille($im,$width,$height);
     318                return _image_tag_changer_taille($im, $width, $height);
    297319        }
    298320
     
    300322        // width : "16:9"
    301323        // height : "+" pour agrandir l'image et "-" pour la croper
    302         if (strpos($width,":")!==false){
    303                 list($wr,$hr) = explode(":",$width);
    304                 $hm = $x_i / $wr * $hr;
    305                 $ym = $y_i / $hr * $wr;
    306                 if ($height=="+"?($y_i<$hm):($y_i>$hm)){
     324        if (strpos($width, ":") !== false) {
     325                list($wr, $hr) = explode(":", $width);
     326                $hm = $x_i/$wr*$hr;
     327                $ym = $y_i/$hr*$wr;
     328                if ($height == "+" ? ($y_i < $hm) : ($y_i > $hm)) {
    307329                        $width = $x_i;
    308330                        $height = $hm;
    309                 }
    310                 else {
     331                } else {
    311332                        $width = $ym;
    312333                        $height = $y_i;
     
    314335        }
    315336
    316         if ($width==0) $width=$x_i;
    317         if ($height==0) $height=$y_i;
     337        if ($width == 0) {
     338                $width = $x_i;
     339        }
     340        if ($height == 0) {
     341                $height = $y_i;
     342        }
    318343
    319344        $offset_width = $x_i-$width;
    320345        $offset_height = $y_i-$height;
    321         $position=strtolower($position);
     346        $position = strtolower($position);
    322347
    323348        // chercher une fonction spéciale de calcul des coordonnées de positionnement.
     
    332357        }
    333358
    334         if (strpos($position,'left')!==FALSE) {
    335                 if (preg_match(';left=(\d{1}\d+);', $position, $left)){
    336                         $offset_width=$left[1];
     359        if (strpos($position, 'left') !== false) {
     360                if (preg_match(';left=(\d{1}\d+);', $position, $left)) {
     361                        $offset_width = $left[1];
    337362                } else {
    338                         $offset_width=0;
    339                 }
    340         } elseif (strpos($position,'right')!==FALSE) {
    341                 $offset_width=$offset_width;
     363                        $offset_width = 0;
     364                }
     365        } elseif (strpos($position, 'right') !== false) {
     366                $offset_width = $offset_width;
    342367        } else {
    343                 $offset_width=intval(ceil($offset_width/2));
    344         }
    345 
    346         if (strpos($position,'top')!==FALSE) {
    347                 if (preg_match(';top=(\d{1}\d+);', $position, $top)){
    348                         $offset_height=$top[1];
     368                $offset_width = intval(ceil($offset_width/2));
     369        }
     370
     371        if (strpos($position, 'top') !== false) {
     372                if (preg_match(';top=(\d{1}\d+);', $position, $top)) {
     373                        $offset_height = $top[1];
    349374                } else {
    350                         $offset_height=0;
    351                 }
    352         } elseif (strpos($position,'bottom')!==FALSE) {
    353                 $offset_height=$offset_height;
     375                        $offset_height = 0;
     376                }
     377        } elseif (strpos($position, 'bottom') !== false) {
     378                $offset_height = $offset_height;
    354379        } else {
    355                 $offset_height=intval(ceil($offset_height/2));
     380                $offset_height = intval(ceil($offset_height/2));
    356381        }
    357382
     
    366391                $im_ = imagecreatetruecolor($width, $height);
    367392                @imagealphablending($im_, false);
    368                 @imagesavealpha($im_,true);
    369 
    370                 if ($background_color=='transparent') {
    371                         $color_t = imagecolorallocatealpha( $im_, 255, 255, 255 , 127 );
     393                @imagesavealpha($im_, true);
     394
     395                if ($background_color == 'transparent') {
     396                        $color_t = imagecolorallocatealpha($im_, 255, 255, 255, 127);
    372397                } else {
    373398                        $bg = _couleur_hex_to_dec($background_color);
    374                         $color_t = imagecolorallocate( $im_, $bg['red'], $bg['green'], $bg['blue']);
    375                 }
    376                 imagefill ($im_, 0, 0, $color_t);
    377                 imagecopy($im_, $im, max(0,-$offset_width), max(0,-$offset_height), max(0,$offset_width), max(0,$offset_height), min($width,$x_i), min($height,$y_i));
    378 
    379                 _image_gd_output($im_,$image);
     399                        $color_t = imagecolorallocate($im_, $bg['red'], $bg['green'], $bg['blue']);
     400                }
     401                imagefill($im_, 0, 0, $color_t);
     402                imagecopy($im_, $im, max(0, -$offset_width), max(0, -$offset_height), max(0, $offset_width), max(0, $offset_height),
     403                        min($width, $x_i), min($height, $y_i));
     404
     405                _image_gd_output($im_, $image);
    380406                imagedestroy($im_);
    381407                imagedestroy($im);
    382408        }
    383409
    384         return _image_ecrire_tag($image, array('src'=>$dest, 'width'=>$width, 'height'=>$height));
     410        return _image_ecrire_tag($image, array('src' => $dest, 'width' => $width, 'height' => $height));
    385411}
    386412
     
    393419 * @return string
    394420 */
    395 function image_recadre_mini($im)
    396 {
     421function image_recadre_mini($im) {
    397422        $fonction = array('image_recadre_mini', func_get_args());
    398         $image = _image_valeurs_trans($im, "recadre_mini",false,$fonction);
    399 
    400         if (!$image) return("");
     423        $image = _image_valeurs_trans($im, "recadre_mini", false, $fonction);
     424
     425        if (!$image) {
     426                return ("");
     427        }
    401428
    402429        $width = $image["largeur"];
     
    417444                $max_y = $max_x = 0;
    418445                $yy = 0;
    419                 while ($yy<=$height/2 AND $max_y<=$min_y){
    420                         if($yy<$min_y)
     446                while ($yy <= $height/2 AND $max_y <= $min_y) {
     447                        if ($yy < $min_y) {
    421448                                for ($xx = 0; $xx < $width; $xx++) {
    422449                                        $color_index = imagecolorat($im, $xx, $yy);
    423450                                        $color_tran = imagecolorsforindex($im, $color_index);
    424                                         if ($color_tran['alpha']!==127){
    425                                                 $min_y = min($yy,$min_y);
    426                                                 $max_y = max($height-1-$yy,$max_y);
     451                                        if ($color_tran['alpha'] !== 127) {
     452                                                $min_y = min($yy, $min_y);
     453                                                $max_y = max($height-1-$yy, $max_y);
    427454                                                break;
    428455                                        }
    429456                                }
    430                         if($height-1-$yy>$max_y)
     457                        }
     458                        if ($height-1-$yy > $max_y) {
    431459                                for ($xx = 0; $xx < $width; $xx++) {
    432460                                        $color_index = imagecolorat($im, $xx, $height-1-$yy);
    433461                                        $color_tran = imagecolorsforindex($im, $color_index);
    434                                         if ($color_tran['alpha']!==127){
    435                                                 $min_y = min($yy,$min_y);
    436                                                 $max_y = max($height-1-$yy,$max_y);
     462                                        if ($color_tran['alpha'] !== 127) {
     463                                                $min_y = min($yy, $min_y);
     464                                                $max_y = max($height-1-$yy, $max_y);
    437465                                                break;
    438466                                        }
    439467                                }
     468                        }
    440469                        $yy++;
    441470                }
    442                 $min_y = min($max_y,$min_y); // tout a 0 aucun pixel trouve
     471                $min_y = min($max_y, $min_y); // tout a 0 aucun pixel trouve
    443472
    444473                $xx = 0;
    445                 while ($xx<=$width/2 AND $max_x<=$min_x){
    446                         if ($xx<$min_x)
     474                while ($xx <= $width/2 AND $max_x <= $min_x) {
     475                        if ($xx < $min_x) {
    447476                                for ($yy = $min_y; $yy < $max_y; $yy++) {
    448477                                        $color_index = imagecolorat($im, $xx, $yy);
    449478                                        $color_tran = imagecolorsforindex($im, $color_index);
    450                                         if ($color_tran['alpha']!==127){
    451                                                 $min_x = min($xx,$min_x);
    452                                                 $max_x = max($xx,$max_x);
     479                                        if ($color_tran['alpha'] !== 127) {
     480                                                $min_x = min($xx, $min_x);
     481                                                $max_x = max($xx, $max_x);
    453482                                                break; // inutile de continuer sur cette colonne
    454483                                        }
    455484                                }
    456                         if ($width-1-$xx>$max_x)
     485                        }
     486                        if ($width-1-$xx > $max_x) {
    457487                                for ($yy = $min_y; $yy < $max_y; $yy++) {
    458488                                        $color_index = imagecolorat($im, $width-1-$xx, $yy);
    459489                                        $color_tran = imagecolorsforindex($im, $color_index);
    460                                         if ($color_tran['alpha']!==127){
    461                                                 $min_x = min($width-1-$xx,$min_x);
    462                                                 $max_x = max($width-1-$xx,$max_x);
     490                                        if ($color_tran['alpha'] !== 127) {
     491                                                $min_x = min($width-1-$xx, $min_x);
     492                                                $max_x = max($width-1-$xx, $max_x);
    463493                                                break; // inutile de continuer sur cette colonne
    464494                                        }
    465495                                }
     496                        }
    466497                        $xx++;
    467498                }
    468                 $min_x = min($max_x,$min_x); // tout a 0 aucun pixel trouve
     499                $min_x = min($max_x, $min_x); // tout a 0 aucun pixel trouve
    469500
    470501                $width = $max_x-$min_x+1;
     
    473504                $im_ = imagecreatetruecolor($width, $height);
    474505                @imagealphablending($im_, false);
    475                 @imagesavealpha($im_,true);
    476 
    477                 $color_t = imagecolorallocatealpha( $im_, 255, 255, 255 , 127 );
    478                 imagefill ($im_, 0, 0, $color_t);
     506                @imagesavealpha($im_, true);
     507
     508                $color_t = imagecolorallocatealpha($im_, 255, 255, 255, 127);
     509                imagefill($im_, 0, 0, $color_t);
    479510                imagecopy($im_, $im, 0, 0, $min_x, $min_y, $width, $height);
    480511
    481                 _image_gd_output($im_,$image);
     512                _image_gd_output($im_, $image);
    482513                imagedestroy($im_);
    483514                imagedestroy($im);
    484         }
    485         else {
    486                 list ($height,$width) = taille_image($image['fichier_dest']);
    487         }
    488 
    489         return _image_ecrire_tag($image,array('src'=>$dest,'width'=>$width,'height'=>$height));
     515        } else {
     516                list ($height, $width) = taille_image($image['fichier_dest']);
     517        }
     518
     519        return _image_ecrire_tag($image, array('src' => $dest, 'width' => $width, 'height' => $height));
    490520}
    491521
    492522
    493523// http://code.spip.net/@image_flip_vertical
    494 function image_flip_vertical($im)
    495 {
     524function image_flip_vertical($im) {
    496525        $fonction = array('image_flip_vertical', func_get_args());
    497         $image = _image_valeurs_trans($im, "flip_v", false,$fonction);
    498         if (!$image) return("");
    499        
     526        $image = _image_valeurs_trans($im, "flip_v", false, $fonction);
     527        if (!$image) {
     528                return ("");
     529        }
     530
    500531        $x_i = $image["largeur"];
    501532        $y_i = $image["hauteur"];
    502        
     533
    503534        $im = $image["fichier"];
    504535        $dest = $image["fichier_dest"];
    505        
     536
    506537        $creer = $image["creer"];
    507        
     538
    508539        if ($creer) {
    509540                $im = $image["fonction_imagecreatefrom"]($im);
     
    511542                $im_ = imagecreatetruecolor($x_i, $y_i);
    512543                @imagealphablending($im_, false);
    513                 @imagesavealpha($im_,true);
    514        
    515                 $color_t = ImageColorAllocateAlpha( $im_, 255, 255, 255 , 127 );
    516                 imagefill ($im_, 0, 0, $color_t);
     544                @imagesavealpha($im_, true);
     545
     546                $color_t = ImageColorAllocateAlpha($im_, 255, 255, 255, 127);
     547                imagefill($im_, 0, 0, $color_t);
    517548
    518549                for ($x = 0; $x < $x_i; $x++) {
    519550                        for ($y = 0; $y < $y_i; $y++) {
    520                                 imagecopy($im_, $im, $x_i - $x - 1, $y, $x, $y, 1, 1);
    521                         }
    522                 }
    523 
    524                 _image_gd_output($im_,$image);
     551                                imagecopy($im_, $im, $x_i-$x-1, $y, $x, $y, 1, 1);
     552                        }
     553                }
     554
     555                _image_gd_output($im_, $image);
    525556                imagedestroy($im_);
    526557                imagedestroy($im);
    527558        }
    528        
    529         return _image_ecrire_tag($image,array('src'=>$dest));
     559
     560        return _image_ecrire_tag($image, array('src' => $dest));
    530561}
    531562
    532563// http://code.spip.net/@image_flip_horizontal
    533 function image_flip_horizontal($im)
    534 {
     564function image_flip_horizontal($im) {
    535565        $fonction = array('image_flip_horizontal', func_get_args());
    536         $image = _image_valeurs_trans($im, "flip_h",false,$fonction);
    537         if (!$image) return("");
    538        
     566        $image = _image_valeurs_trans($im, "flip_h", false, $fonction);
     567        if (!$image) {
     568                return ("");
     569        }
     570
    539571        $x_i = $image["largeur"];
    540572        $y_i = $image["hauteur"];
    541        
     573
    542574        $im = $image["fichier"];
    543575        $dest = $image["fichier_dest"];
    544        
     576
    545577        $creer = $image["creer"];
    546        
     578
    547579        if ($creer) {
    548580                $im = $image["fonction_imagecreatefrom"]($im);
     
    550582                $im_ = imagecreatetruecolor($x_i, $y_i);
    551583                @imagealphablending($im_, false);
    552                 @imagesavealpha($im_,true);
    553        
    554                 $color_t = ImageColorAllocateAlpha( $im_, 255, 255, 255 , 127 );
    555                 imagefill ($im_, 0, 0, $color_t);
     584                @imagesavealpha($im_, true);
     585
     586                $color_t = ImageColorAllocateAlpha($im_, 255, 255, 255, 127);
     587                imagefill($im_, 0, 0, $color_t);
    556588
    557589                for ($x = 0; $x < $x_i; $x++) {
    558590                        for ($y = 0; $y < $y_i; $y++) {
    559                                 imagecopy($im_, $im, $x, $y_i - $y - 1, $x, $y, 1, 1);
    560                         }
    561                 }
    562                 _image_gd_output($im_,$image);
     591                                imagecopy($im_, $im, $x, $y_i-$y-1, $x, $y, 1, 1);
     592                        }
     593                }
     594                _image_gd_output($im_, $image);
    563595                imagedestroy($im_);
    564596                imagedestroy($im);
    565597        }
    566        
    567         return _image_ecrire_tag($image,array('src'=>$dest));
     598
     599        return _image_ecrire_tag($image, array('src' => $dest));
    568600}
    569601
     
    610642        $texte = $arg_list[0];
    611643        for ($i = 1; $i < $numargs; $i++) {
    612                 if ( ($p = strpos($arg_list[$i],"=")) !==false) {
     644                if (($p = strpos($arg_list[$i], "=")) !== false) {
    613645                        $nom_variable = substr($arg_list[$i], 0, $p);
    614646                        $val_variable = substr($arg_list[$i], $p+1);
     
    624656        // - une balise <img src='...' />
    625657        // - une image avec un timestamp ?01234
    626         $mask = _image_valeurs_trans($masque, "source-image_masque", "png",null, true);
    627         if (!$mask) return("");
     658        $mask = _image_valeurs_trans($masque, "source-image_masque", "png", null, true);
     659        if (!$mask) {
     660                return ("");
     661        }
    628662        $masque = $mask['fichier'];
    629663
    630         $pos = md5(serialize($variable).$mask['date_src']);
     664        $pos = md5(serialize($variable) . $mask['date_src']);
    631665        $fonction = array('image_masque', func_get_args());
    632         $image = _image_valeurs_trans($im, "masque-$masque-$pos", "png",$fonction);
    633         if (!$image) return("");
     666        $image = _image_valeurs_trans($im, "masque-$masque-$pos", "png", $fonction);
     667        if (!$image) {
     668                return ("");
     669        }
    634670
    635671        $x_i = $image["largeur"];
     
    651687
    652688        if ($creer) {
    653                
     689
    654690                $im_m = $mask["fichier"];
    655691                $x_m = $mask["largeur"];
     
    657693
    658694                $im2 = $mask["fonction_imagecreatefrom"]($masque);
    659                 if ($mask["format_source"] == "gif" AND function_exists('ImageCopyResampled')) { 
     695                if ($mask["format_source"] == "gif" AND function_exists('ImageCopyResampled')) {
    660696                        $im2_ = imagecreatetruecolor($x_m, $y_m);
    661697                        // Si un GIF est transparent,
    662698                        // fabriquer un PNG transparent 
    663699                        // Conserver la transparence
    664                         if (function_exists("imageAntiAlias")) imageAntiAlias($im2_,true);
    665                         @imagealphablending($im2_, false);
    666                         @imagesavealpha($im2_,true);
     700                        if (function_exists("imageAntiAlias")) {
     701                                imageAntiAlias($im2_, true);
     702                        }
     703                        @imagealphablending($im2_, false);
     704                        @imagesavealpha($im2_, true);
    667705                        @ImageCopyResampled($im2_, $im2, 0, 0, 0, 0, $x_m, $y_m, $x_m, $y_m);
    668706                        imagedestroy($im2);
     
    678716                        $dx = 0;
    679717                        $dy = 0;
    680                        
     718
    681719                        if (isset($defini["right"]) and $defini["right"]) {
    682720                                $right = $variable["right"];
    683                                 $dx = ($x_i - $x_m) - $right;
     721                                $dx = ($x_i-$x_m)-$right;
    684722                        }
    685723                        if (isset($defini["bottom"]) and $defini["bottom"]) {
    686724                                $bottom = $variable["bottom"];
    687                                 $dy = ($y_i - $y_m) - $bottom;
    688                                 }
     725                                $dy = ($y_i-$y_m)-$bottom;
     726                        }
    689727                        if (isset($defini["top"]) and $defini["top"]) {
    690728                                $top = $variable["top"];
     
    699737                                if ($align == "right") {
    700738                                        $right = 0;
    701                                         $dx = ($x_i - $x_m);
    702                                 } else if ($align == "left") {
    703                                         $left = 0;
    704                                         $dx = 0;
    705                                 } else if ($align = "center") {
    706                                         $dx = round( ($x_i - $x_m) / 2 ) ;
     739                                        $dx = ($x_i-$x_m);
     740                                } else {
     741                                        if ($align == "left") {
     742                                                $left = 0;
     743                                                $dx = 0;
     744                                        } else {
     745                                                if ($align = "center") {
     746                                                        $dx = round(($x_i-$x_m)/2);
     747                                                }
     748                                        }
    707749                                }
    708750                        }
     
    711753                                if ($valign == "bottom") {
    712754                                        $bottom = 0;
    713                                         $dy = ($y_i - $y_m);
    714                                 } else if ($valign == "top") {
    715                                         $top = 0;
    716                                         $dy = 0;
    717                                 } else if ($valign = "middle") {
    718                                         $dy = round( ($y_i - $y_m) / 2 ) ;
     755                                        $dy = ($y_i-$y_m);
     756                                } else {
     757                                        if ($valign == "top") {
     758                                                $top = 0;
     759                                                $dy = 0;
     760                                        } else {
     761                                                if ($valign = "middle") {
     762                                                        $dy = round(($y_i-$y_m)/2);
     763                                                }
     764                                        }
    719765                                }
    720766                        }
     
    723769                        $im3 = imagecreatetruecolor($x_i, $y_i);
    724770                        @imagealphablending($im3, false);
    725                         @imagesavealpha($im3,true);
    726                         if ($mode == "masque") $color_t = ImageColorAllocateAlpha( $im3, 128, 128, 128 , 0 );
    727                         else $color_t = ImageColorAllocateAlpha( $im3, 128, 128, 128 , 127 );
    728                         imagefill ($im3, 0, 0, $color_t);
    729 
    730 
    731                         imagecopy ( $im3, $im2, $dx, $dy, 0, 0, $x_m, $y_m);
     771                        @imagesavealpha($im3, true);
     772                        if ($mode == "masque") {
     773                                $color_t = ImageColorAllocateAlpha($im3, 128, 128, 128, 0);
     774                        } else {
     775                                $color_t = ImageColorAllocateAlpha($im3, 128, 128, 128, 127);
     776                        }
     777                        imagefill($im3, 0, 0, $color_t);
     778
     779
     780                        imagecopy($im3, $im2, $dx, $dy, 0, 0, $x_m, $y_m);
    732781
    733782                        imagedestroy($im2);
    734783                        $im2 = imagecreatetruecolor($x_i, $y_i);
    735784                        @imagealphablending($im2, false);
    736                         @imagesavealpha($im2,true);
    737 
    738                         imagecopy ( $im2, $im3, 0, 0, 0, 0, $x_i, $y_i);
     785                        @imagesavealpha($im2, true);
     786
     787                        imagecopy($im2, $im3, 0, 0, 0, 0, $x_i, $y_i);
    739788                        imagedestroy($im3);
    740789                        $x_m = $x_i;
     
    743792
    744793
    745                 $rapport = $x_i / $x_m;
    746                 if (($y_i / $y_m) < $rapport ) {
    747                         $rapport = $y_i / $y_m;
    748                 }
    749                        
    750                 $x_d = ceil($x_i / $rapport);
    751                 $y_d = ceil($y_i / $rapport);
     794                $rapport = $x_i/$x_m;
     795                if (($y_i/$y_m) < $rapport) {
     796                        $rapport = $y_i/$y_m;
     797                }
     798
     799                $x_d = ceil($x_i/$rapport);
     800                $y_d = ceil($y_i/$rapport);
    752801
    753802
     
    760809                        $x_dest = $x_m;
    761810                        $y_dest = $y_m;
    762                         $x_dec = round(($x_d - $x_m) /2);
    763                         $y_dec = round(($y_d - $y_m) /2);
    764                 }
    765 
    766 
    767                 $nouveau = _image_valeurs_trans(image_reduire($im, $x_d, $y_d),"");
    768                 if (!is_array($nouveau)) return("");
     811                        $x_dec = round(($x_d-$x_m)/2);
     812                        $y_dec = round(($y_d-$y_m)/2);
     813                }
     814
     815
     816                $nouveau = _image_valeurs_trans(image_reduire($im, $x_d, $y_d), "");
     817                if (!is_array($nouveau)) {
     818                        return ("");
     819                }
    769820                $im_n = $nouveau["fichier"];
    770821
     
    772823                $im = $nouveau["fonction_imagecreatefrom"]($im_n);
    773824                imagepalettetotruecolor($im);
    774                 if ($nouveau["format_source"] == "gif" AND function_exists('ImageCopyResampled')) { 
     825                if ($nouveau["format_source"] == "gif" AND function_exists('ImageCopyResampled')) {
    775826                        $im_ = imagecreatetruecolor($x_dest, $y_dest);
    776827                        // Si un GIF est transparent,
    777828                        // fabriquer un PNG transparent 
    778829                        // Conserver la transparence
    779                         if (function_exists("imageAntiAlias")) imageAntiAlias($im_,true);
    780                         @imagealphablending($im_, false);
    781                         @imagesavealpha($im_,true);
     830                        if (function_exists("imageAntiAlias")) {
     831                                imageAntiAlias($im_, true);
     832                        }
     833                        @imagealphablending($im_, false);
     834                        @imagesavealpha($im_, true);
    782835                        @ImageCopyResampled($im_, $im, 0, 0, 0, 0, $x_dest, $y_dest, $x_dest, $y_dest);
    783836                        imagedestroy($im);
     
    786839                $im_ = imagecreatetruecolor($x_dest, $y_dest);
    787840                @imagealphablending($im_, false);
    788                 @imagesavealpha($im_,true);
    789                 $color_t = ImageColorAllocateAlpha( $im_, 255, 255, 255 , 127 );
    790                 imagefill ($im_, 0, 0, $color_t);
     841                @imagesavealpha($im_, true);
     842                $color_t = ImageColorAllocateAlpha($im_, 255, 255, 255, 127);
     843                imagefill($im_, 0, 0, $color_t);
    791844
    792845
    793846                // calcul couleurs de chaque pixel selon les modes de fusion
    794847                for ($x = 0; $x < $x_dest; $x++) {
    795                         for ($y=0; $y < $y_dest; $y++) {
     848                        for ($y = 0; $y < $y_dest; $y++) {
    796849                                $rgb = ImageColorAt($im2, $x, $y); // image au dessus
    797850                                $a = ($rgb >> 24) & 0xFF;
     
    807860
    808861                                if ($mode == "normal") {
    809                                         $v = (127 - $a) / 127;
     862                                        $v = (127-$a)/127;
    810863                                        if ($v == 1) {
    811864                                                $r_ = $r;
     
    813866                                                $b_ = $b;
    814867                                        } else {
    815                                                 $v2 = (127 - $a2) / 127;
     868                                                $v2 = (127-$a2)/127;
    816869                                                if ($v+$v2 == 0) {
    817870                                                        $r_ = $r2;
    818871                                                        $g_ = $g2;
    819872                                                        $b_ = $b2;
    820                                                 } else if ($v2 == 0) {
    821                                                         $r_ = $r;
    822                                                         $g_ = $g;
    823                                                         $b_ = $b;
    824                                                 } else if ($v == 0) {
    825                                                         $r_ = $r2;
    826                                                         $g_ = $g2;
    827                                                         $b_ = $b2;
    828                                                 }else {
    829                                                         $r_ = $r + (($r2 - $r) * $v2 * (1 - $v));
    830                                                         $g_ = $g + (($g2 - $g) * $v2 * (1 - $v));
    831                                                         $b_ = $b + (($b2 - $b) * $v2 * (1 - $v));
     873                                                } else {
     874                                                        if ($v2 == 0) {
     875                                                                $r_ = $r;
     876                                                                $g_ = $g;
     877                                                                $b_ = $b;
     878                                                        } else {
     879                                                                if ($v == 0) {
     880                                                                        $r_ = $r2;
     881                                                                        $g_ = $g2;
     882                                                                        $b_ = $b2;
     883                                                                } else {
     884                                                                        $r_ = $r+(($r2-$r)*$v2*(1-$v));
     885                                                                        $g_ = $g+(($g2-$g)*$v2*(1-$v));
     886                                                                        $b_ = $b+(($b2-$b)*$v2*(1-$v));
     887                                                                }
     888                                                        }
    832889                                                }
    833890                                        }
    834                                         $a_ = min($a,$a2);
    835 
    836                                 } elseif (in_array($mode, array("produit","difference","superposer","lumiere_dure","ecran"))) {
     891                                        $a_ = min($a, $a2);
     892
     893                                } elseif (in_array($mode, array("produit", "difference", "superposer", "lumiere_dure", "ecran"))) {
    837894                                        if ($mode == "produit") {
    838                                                 $r = ($r/255) * $r2;
    839                                                 $g = ($g/255) * $g2;
    840                                                 $b = ($b/255) * $b2;
     895                                                $r = ($r/255)*$r2;
     896                                                $g = ($g/255)*$g2;
     897                                                $b = ($b/255)*$b2;
    841898                                        } elseif ($mode == "difference") {
    842899                                                $r = abs($r-$r2);
     
    844901                                                $b = abs($b-$b2);
    845902                                        } elseif ($mode == "superposer") {
    846                                                 $r = ($r2 < 128) ? 2 * $r * $r2 / 255 : 255 - (2 * (255 - $r) * (255 - $r2) / 255);
    847                                                 $g = ($g2 < 128) ? 2 * $g * $g2 / 255 : 255 - (2 * (255 - $g) * (255 - $g2) / 255);
    848                                                 $b = ($b2 < 128) ? 2 * $b * $b2 / 255 : 255 - (2 * (255 - $b) * (255 - $b2) / 255);
     903                                                $r = ($r2 < 128) ? 2*$r*$r2/255 : 255-(2*(255-$r)*(255-$r2)/255);
     904                                                $g = ($g2 < 128) ? 2*$g*$g2/255 : 255-(2*(255-$g)*(255-$g2)/255);
     905                                                $b = ($b2 < 128) ? 2*$b*$b2/255 : 255-(2*(255-$b)*(255-$b2)/255);
    849906                                        } elseif ($mode == "lumiere_dure") {
    850                                                 $r = ($r < 128) ? 2 * $r * $r2 / 255 : 255 - (2 * (255 - $r2) * (255 - $r) / 255);
    851                                                 $g = ($g < 128) ? 2 * $g * $g2 / 255 : 255 - (2 * (255 - $g2) * (255 - $g) / 255);
    852                                                 $b = ($b < 128) ? 2 * $b * $b2 / 255 : 255 - (2 * (255 - $b2) * (255 - $b) / 255);
     907                                                $r = ($r < 128) ? 2*$r*$r2/255 : 255-(2*(255-$r2)*(255-$r)/255);
     908                                                $g = ($g < 128) ? 2*$g*$g2/255 : 255-(2*(255-$g2)*(255-$g)/255);
     909                                                $b = ($b < 128) ? 2*$b*$b2/255 : 255-(2*(255-$b2)*(255-$b)/255);
    853910                                        } elseif ($mode == "ecran") {
    854                                                 $r = 255 - (((255 - $r) * (255 - $r2)) / 255);
    855                                                 $g = 255 - (((255 - $g) * (255 - $g2)) / 255);
    856                                                 $b = 255 - (((255 - $b) * (255 - $b2)) / 255);
     911                                                $r = 255-(((255-$r)*(255-$r2))/255);
     912                                                $g = 255-(((255-$g)*(255-$g2))/255);
     913                                                $b = 255-(((255-$b)*(255-$b2))/255);
    857914                                        }
    858915                                        $r = max(0, min($r, 255));
     
    861918
    862919                                        // melange en fonction de la transparence du masque
    863                                         $v = (127 - $a) / 127;
     920                                        $v = (127-$a)/127;
    864921                                        if ($v == 1) { // melange complet
    865922                                                $r_ = $r;
     
    867924                                                $b_ = $b;
    868925                                        } else {
    869                                                 $v2 = (127 - $a2) / 127;
     926                                                $v2 = (127-$a2)/127;
    870927                                                if ($v+$v2 == 0) { // ??
    871928                                                        $r_ = $r2;
     
    873930                                                        $b_ = $b2;
    874931                                                } else { // pas de melange (transparence du masque)
    875                                                         $r_ = $r + (($r2 - $r) * $v2 * (1 - $v));
    876                                                         $g_ = $g + (($g2 - $g) * $v2 * (1 - $v));
    877                                                         $b_ = $b + (($b2 - $b) * $v2 * (1 - $v));
     932                                                        $r_ = $r+(($r2-$r)*$v2*(1-$v));
     933                                                        $g_ = $g+(($g2-$g)*$v2*(1-$v));
     934                                                        $b_ = $b+(($b2-$b)*$v2*(1-$v));
    878935                                                }
    879936                                        }
     
    881938
    882939                                } elseif ($mode == "eclaircir" OR $mode == "obscurcir") {
    883                                         $v = (127 - $a) / 127;
     940                                        $v = (127-$a)/127;
    884941                                        if ($v == 1) {
    885942                                                $r_ = $r;
     
    887944                                                $b_ = $b;
    888945                                        } else {
    889                                                 $v2 = (127 - $a2) / 127;
     946                                                $v2 = (127-$a2)/127;
    890947                                                if ($v+$v2 == 0) {
    891948                                                        $r_ = $r2;
     
    893950                                                        $b_ = $b2;
    894951                                                } else {
    895                                                         $r_ = $r + (($r2 - $r) * $v2 * (1 - $v));
    896                                                         $g_ = $g + (($g2 - $g) * $v2 * (1 - $v));
    897                                                         $b_ = $b + (($b2 - $b) * $v2 * (1 - $v));
     952                                                        $r_ = $r+(($r2-$r)*$v2*(1-$v));
     953                                                        $g_ = $g+(($g2-$g)*$v2*(1-$v));
     954                                                        $b_ = $b+(($b2-$b)*$v2*(1-$v));
    898955                                                }
    899956                                        }
    900957                                        if ($mode == "eclaircir") {
    901                                                 $r_ = max ($r_, $r2);
    902                                                 $g_ = max ($g_, $g2);
    903                                                 $b_ = max ($b_, $b2);
     958                                                $r_ = max($r_, $r2);
     959                                                $g_ = max($g_, $g2);
     960                                                $b_ = max($b_, $b2);
    904961                                        } else {
    905                                                 $r_ = min ($r_, $r2);
    906                                                 $g_ = min ($g_, $g2);
    907                                                 $b_ = min ($b_, $b2);
     962                                                $r_ = min($r_, $r2);
     963                                                $g_ = min($g_, $g2);
     964                                                $b_ = min($b_, $b2);
    908965                                        }
    909                                         $a_ = min($a,$a2);
    910 
    911                                 } elseif (in_array($mode, array("teinte","saturation","valeur"))) {
     966                                        $a_ = min($a, $a2);
     967
     968                                } elseif (in_array($mode, array("teinte", "saturation", "valeur"))) {
    912969                                        include_spip("filtres/images_lib");
    913970                                        $hsv = _couleur_rgb2hsv($r, $g, $b); // image au dessus
     
    919976                                        $s2 = $hsv2["s"];
    920977                                        $v2 = $hsv2["v"];
    921                                         switch ($mode)  {
     978                                        switch ($mode) {
    922979                                                case "teinte";
    923980                                                        $rgb3 = _couleur_hsv2rgb($h, $s2, $v2);
     
    935992
    936993                                        // melange en fonction de la transparence du masque
    937                                         $v = (127 - $a) / 127;
     994                                        $v = (127-$a)/127;
    938995                                        if ($v == 1) { // melange complet
    939996                                                $r_ = $r;
     
    941998                                                $b_ = $b;
    942999                                        } else {
    943                                                 $v2 = (127 - $a2) / 127;
     1000                                                $v2 = (127-$a2)/127;
    9441001                                                if ($v+$v2 == 0) { // ??
    9451002                                                        $r_ = $r2;
     
    9471004                                                        $b_ = $b2;
    9481005                                                } else { // pas de melange (transparence du masque)
    949                                                         $r_ = $r + (($r2 - $r) * $v2 * (1 - $v));
    950                                                         $g_ = $g + (($g2 - $g) * $v2 * (1 - $v));
    951                                                         $b_ = $b + (($b2 - $b) * $v2 * (1 - $v));
     1006                                                        $r_ = $r+(($r2-$r)*$v2*(1-$v));
     1007                                                        $g_ = $g+(($g2-$g)*$v2*(1-$v));
     1008                                                        $b_ = $b+(($b2-$b)*$v2*(1-$v));
    9521009                                                }
    9531010                                        }
     
    9551012
    9561013                                } else {
    957                                         $r_ = $r2 + 1 * ($r - 127);
     1014                                        $r_ = $r2+1*($r-127);
    9581015                                        $r_ = max(0, min($r_, 255));
    959                                         $g_ = $g2 + 1 * ($g - 127);
     1016                                        $g_ = $g2+1*($g-127);
    9601017                                        $g_ = max(0, min($g_, 255));
    961                                         $b_ = $b2 + 1 * ($b - 127);
     1018                                        $b_ = $b2+1*($b-127);
    9621019                                        $b_ = max(0, min($b_, 255));
    963                                         $a_ = $a + $a2 - round($a*$a2/127);
    964                                 }
    965 
    966                                 $color = ImageColorAllocateAlpha( $im_, $r_, $g_, $b_ , $a_ );
    967                                 imagesetpixel ($im_, $x, $y, $color);
    968                         }
    969                 }
    970 
    971                 _image_gd_output($im_,$image);
     1020                                        $a_ = $a+$a2-round($a*$a2/127);
     1021                                }
     1022
     1023                                $color = ImageColorAllocateAlpha($im_, $r_, $g_, $b_, $a_);
     1024                                imagesetpixel($im_, $x, $y, $color);
     1025                        }
     1026                }
     1027
     1028                _image_gd_output($im_, $image);
    9721029                imagedestroy($im_);
    9731030                imagedestroy($im);
     
    9771034        $x_dest = largeur($dest);
    9781035        $y_dest = hauteur($dest);
    979         return _image_ecrire_tag($image,array('src'=>$dest,'width'=>$x_dest,'height'=>$y_dest));
     1036
     1037        return _image_ecrire_tag($image, array('src' => $dest, 'width' => $x_dest, 'height' => $y_dest));
    9801038}
    9811039
     
    9851043// on peut ici regler cette ponderation en "pour mille"
    9861044// http://code.spip.net/@image_nb
    987 function image_nb($im, $val_r = 299, $val_g = 587, $val_b = 114)
    988 {
     1045function image_nb($im, $val_r = 299, $val_g = 587, $val_b = 114) {
    9891046        $fonction = array('image_nb', func_get_args());
    990         $image = _image_valeurs_trans($im, "nb-$val_r-$val_g-$val_b",false,$fonction);
    991         if (!$image) return("");
    992        
     1047        $image = _image_valeurs_trans($im, "nb-$val_r-$val_g-$val_b", false, $fonction);
     1048        if (!$image) {
     1049                return ("");
     1050        }
     1051
    9931052        $x_i = $image["largeur"];
    9941053        $y_i = $image["hauteur"];
    995        
     1054
    9961055        $im = $image["fichier"];
    9971056        $dest = $image["fichier_dest"];
    998        
     1057
    9991058        $creer = $image["creer"];
    1000        
     1059
    10011060        // Methode precise
    10021061        // resultat plus beau, mais tres lourd
     
    10101069                $im_ = imagecreatetruecolor($x_i, $y_i);
    10111070                @imagealphablending($im_, false);
    1012                 @imagesavealpha($im_,true);
    1013                 $color_t = ImageColorAllocateAlpha( $im_, 255, 255, 255 , 127 );
    1014                 imagefill ($im_, 0, 0, $color_t);
     1071                @imagesavealpha($im_, true);
     1072                $color_t = ImageColorAllocateAlpha($im_, 255, 255, 255, 127);
     1073                imagefill($im_, 0, 0, $color_t);
    10151074                imagecopy($im_, $im, 0, 0, 0, 0, $x_i, $y_i);
    1016                
     1075
    10171076                for ($x = 0; $x < $x_i; $x++) {
    1018                         for ($y=0; $y < $y_i; $y++) {
     1077                        for ($y = 0; $y < $y_i; $y++) {
    10191078                                $rgb = ImageColorAt($im_, $x, $y);
    10201079                                $a = ($rgb >> 24) & 0xFF;
     
    10231082                                $b = $rgb & 0xFF;
    10241083
    1025                                 $c = round(($val_r * $r / 1000) + ($val_g * $g / 1000) + ($val_b * $b / 1000));
    1026                                 if ($c < 0) $c = 0;
    1027                                 if ($c > 254) $c = 254;
    1028                                
    1029                                
    1030                                 $color = ImageColorAllocateAlpha( $im_, $c, $c, $c , $a );
    1031                                 imagesetpixel ($im_, $x, $y, $color);                   
    1032                         }
    1033                 }
    1034                 _image_gd_output($im_,$image);
     1084                                $c = round(($val_r*$r/1000)+($val_g*$g/1000)+($val_b*$b/1000));
     1085                                if ($c < 0) {
     1086                                        $c = 0;
     1087                                }
     1088                                if ($c > 254) {
     1089                                        $c = 254;
     1090                                }
     1091
     1092
     1093                                $color = ImageColorAllocateAlpha($im_, $c, $c, $c, $a);
     1094                                imagesetpixel($im_, $x, $y, $color);
     1095                        }
     1096                }
     1097                _image_gd_output($im_, $image);
    10351098                imagedestroy($im_);
    10361099                imagedestroy($im);
    10371100        }
    10381101
    1039         return _image_ecrire_tag($image,array('src'=>$dest));
     1102        return _image_ecrire_tag($image, array('src' => $dest));
    10401103}
    10411104
    10421105// http://code.spip.net/@image_flou
    1043 function image_flou($im, $niveau = 3)
    1044 {
     1106function image_flou($im, $niveau = 3) {
    10451107        // Il s'agit d'une modification du script blur qu'on trouve un peu partout:
    10461108        // + la transparence est geree correctement
    10471109        // + les dimensions de l'image sont augmentees pour flouter les bords
    1048         $coeffs = array (
    1049                                 array ( 1),
    1050                                 array ( 1, 1),
    1051                                 array ( 1, 2, 1),
    1052                                 array ( 1, 3, 3, 1),
    1053                                 array ( 1, 4, 6, 4, 1),
    1054                                 array ( 1, 5, 10, 10, 5, 1),
    1055                                 array ( 1, 6, 15, 20, 15, 6, 1),
    1056                                 array ( 1, 7, 21, 35, 35, 21, 7, 1),
    1057                                 array ( 1, 8, 28, 56, 70, 56, 28, 8, 1),
    1058                                 array ( 1, 9, 36, 84, 126, 126, 84, 36, 9, 1),
    1059                                 array ( 1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1),
    1060                                 array ( 1, 11, 55, 165, 330, 462, 462, 330, 165, 55, 11, 1)
    1061                                 );
    1062        
     1110        $coeffs = array(
     1111                array(1),
     1112                array(1, 1),
     1113                array(1, 2, 1),
     1114                array(1, 3, 3, 1),
     1115                array(1, 4, 6, 4, 1),
     1116                array(1, 5, 10, 10, 5, 1),
     1117                array(1, 6, 15, 20, 15, 6, 1),
     1118                array(1, 7, 21, 35, 35, 21, 7, 1),
     1119                array(1, 8, 28, 56, 70, 56, 28, 8, 1),
     1120                array(1, 9, 36, 84, 126, 126, 84, 36, 9, 1),
     1121                array(1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1),
     1122                array(1, 11, 55, 165, 330, 462, 462, 330, 165, 55, 11, 1)
     1123        );
     1124
    10631125        $fonction = array('image_flou', func_get_args());
    1064         $image = _image_valeurs_trans($im, "flou-$niveau", false,$fonction);
    1065         if (!$image) return("");
    1066        
     1126        $image = _image_valeurs_trans($im, "flou-$niveau", false, $fonction);
     1127        if (!$image) {
     1128                return ("");
     1129        }
     1130
    10671131        $x_i = $image["largeur"];
    10681132        $y_i = $image["hauteur"];
    1069         $sum = pow (2, $niveau);
     1133        $sum = pow(2, $niveau);
    10701134
    10711135        $im = $image["fichier"];
    10721136        $dest = $image["fichier_dest"];
    1073        
     1137
    10741138        $creer = $image["creer"];
    1075        
     1139
    10761140        // Methode precise
    10771141        // resultat plus beau, mais tres lourd
     
    10851149                $temp1 = imagecreatetruecolor($x_i+$niveau, $y_i);
    10861150                $temp2 = imagecreatetruecolor($x_i+$niveau, $y_i+$niveau);
    1087                
     1151
    10881152                @imagealphablending($temp1, false);
    1089                 @imagesavealpha($temp1,true);
     1153                @imagesavealpha($temp1, true);
    10901154                @imagealphablending($temp2, false);
    1091                 @imagesavealpha($temp2,true);
    1092 
    1093                
     1155                @imagesavealpha($temp2, true);
     1156
     1157
    10941158                for ($i = 0; $i < $x_i+$niveau; $i++) {
    1095                         for ($j=0; $j < $y_i; $j++) {
    1096                                 $suma=0;
    1097                                 $sumr=0;
    1098                                 $sumg=0;
    1099                                 $sumb=0;
     1159                        for ($j = 0; $j < $y_i; $j++) {
     1160                                $suma = 0;
     1161                                $sumr = 0;
     1162                                $sumg = 0;
     1163                                $sumb = 0;
    11001164                                $sum = 0;
    11011165                                $sum_ = 0;
    1102                                 for ( $k=0 ; $k <= $niveau ; ++$k ) {
    1103                                         $color = imagecolorat($im, $i_ = ($i-$niveau)+$k , $j);
     1166                                for ($k = 0; $k <= $niveau; ++$k) {
     1167                                        $color = imagecolorat($im, $i_ = ($i-$niveau)+$k, $j);
    11041168
    11051169                                        $a = ($color >> 24) & 0xFF;
     
    11071171                                        $g = ($color >> 8) & 0xFF;
    11081172                                        $b = ($color) & 0xFF;
    1109                                        
    1110                                         if ($i_ < 0 OR $i_ >= $x_i) $a = 127;
    1111                                        
     1173
     1174                                        if ($i_ < 0 OR $i_ >= $x_i) {
     1175                                                $a = 127;
     1176                                        }
     1177
    11121178                                        $coef = $coeffs[$niveau][$k];
    11131179                                        $suma += $a*$coef;
    1114                                         $ac = ((127-$a) / 127);
    1115                                        
     1180                                        $ac = ((127-$a)/127);
     1181
    11161182                                        $ac = $ac*$ac;
    1117                                        
    1118                                         $sumr += $r * $coef * $ac;
    1119                                         $sumg += $g * $coef * $ac;
    1120                                         $sumb += $b * $coef * $ac;
    1121                                         $sum += $coef * $ac;
     1183
     1184                                        $sumr += $r*$coef*$ac;
     1185                                        $sumg += $g*$coef*$ac;
     1186                                        $sumb += $b*$coef*$ac;
     1187                                        $sum += $coef*$ac;
    11221188                                        $sum_ += $coef;
    11231189                                }
    1124                                 if ($sum > 0) $color = ImageColorAllocateAlpha ($temp1, $sumr/$sum, $sumg/$sum, $sumb/$sum, $suma/$sum_);
    1125                                 else $color = ImageColorAllocateAlpha ($temp1, 255, 255, 255, 127);
    1126                                 imagesetpixel($temp1,$i,$j,$color);
     1190                                if ($sum > 0) {
     1191                                        $color = ImageColorAllocateAlpha($temp1, $sumr/$sum, $sumg/$sum, $sumb/$sum, $suma/$sum_);
     1192                                } else {
     1193                                        $color = ImageColorAllocateAlpha($temp1, 255, 255, 255, 127);
     1194                                }
     1195                                imagesetpixel($temp1, $i, $j, $color);
    11271196                        }
    11281197                }
    11291198                imagedestroy($im);
    11301199                for ($i = 0; $i < $x_i+$niveau; $i++) {
    1131                         for ($j=0; $j < $y_i+$niveau; $j++) {
    1132                                 $suma=0;
    1133                                 $sumr=0;
    1134                                 $sumg=0;
    1135                                 $sumb=0;
     1200                        for ($j = 0; $j < $y_i+$niveau; $j++) {
     1201                                $suma = 0;
     1202                                $sumr = 0;
     1203                                $sumg = 0;
     1204                                $sumb = 0;
    11361205                                $sum = 0;
    11371206                                $sum_ = 0;
    1138                                 for ( $k=0 ; $k <= $niveau ; ++$k ) {
     1207                                for ($k = 0; $k <= $niveau; ++$k) {
    11391208                                        $color = imagecolorat($temp1, $i, $j_ = $j-$niveau+$k);
    11401209                                        $a = ($color >> 24) & 0xFF;
     
    11421211                                        $g = ($color >> 8) & 0xFF;
    11431212                                        $b = ($color) & 0xFF;
    1144                                         if ($j_ < 0 OR $j_ >= $y_i) $a = 127;
    1145                                        
     1213                                        if ($j_ < 0 OR $j_ >= $y_i) {
     1214                                                $a = 127;
     1215                                        }
     1216
    11461217                                        $suma += $a*$coeffs[$niveau][$k];
    1147                                         $ac = ((127-$a) / 127);
    1148                                                                                
    1149                                         $sumr += $r * $coeffs[$niveau][$k] * $ac;
    1150                                         $sumg += $g * $coeffs[$niveau][$k] * $ac;
    1151                                         $sumb += $b * $coeffs[$niveau][$k] * $ac;
    1152                                         $sum += $coeffs[$niveau][$k] * $ac;
     1218                                        $ac = ((127-$a)/127);
     1219
     1220                                        $sumr += $r*$coeffs[$niveau][$k]*$ac;
     1221                                        $sumg += $g*$coeffs[$niveau][$k]*$ac;
     1222                                        $sumb += $b*$coeffs[$niveau][$k]*$ac;
     1223                                        $sum += $coeffs[$niveau][$k]*$ac;
    11531224                                        $sum_ += $coeffs[$niveau][$k];
    1154                                        
    1155                                 }
    1156                                 if ($sum > 0) $color = ImageColorAllocateAlpha ($temp2, $sumr/$sum, $sumg/$sum, $sumb/$sum, $suma/$sum_);
    1157                                 else $color = ImageColorAllocateAlpha ($temp2, 255, 255, 255, 127);
    1158                                 imagesetpixel($temp2,$i,$j,$color);
    1159                         }
    1160                 }
    1161        
    1162                 _image_gd_output($temp2,$image);
    1163                 imagedestroy($temp1);   
    1164                 imagedestroy($temp2);   
    1165         }
    1166        
    1167         return _image_ecrire_tag($image,array('src'=>$dest,'width'=>($x_i+$niveau),'height'=>($y_i+$niveau)));
     1225
     1226                                }
     1227                                if ($sum > 0) {
     1228                                        $color = ImageColorAllocateAlpha($temp2, $sumr/$sum, $sumg/$sum, $sumb/$sum, $suma/$sum_);
     1229                                } else {
     1230                                        $color = ImageColorAllocateAlpha($temp2, 255, 255, 255, 127);
     1231                                }
     1232                                imagesetpixel($temp2, $i, $j, $color);
     1233                        }
     1234                }
     1235
     1236                _image_gd_output($temp2, $image);
     1237                imagedestroy($temp1);
     1238                imagedestroy($temp2);
     1239        }
     1240
     1241        return _image_ecrire_tag($image, array('src' => $dest, 'width' => ($x_i+$niveau), 'height' => ($y_i+$niveau)));
    11681242}
    11691243
     
    11711245function image_RotateBicubic($src_img, $angle, $bicubic = 0) {
    11721246        include_spip('filtres/images_lib');
    1173    
     1247
    11741248        if (round($angle/90)*90 == $angle) {
    11751249                $droit = true;
    1176                 if (round($angle/180)*180 == $angle) $rot = 180;
    1177                 else $rot = 90;
    1178         }
    1179         else
     1250                if (round($angle/180)*180 == $angle) {
     1251                        $rot = 180;
     1252                } else {
     1253                        $rot = 90;
     1254                }
     1255        } else {
    11801256                $droit = false;
    1181    
     1257        }
     1258
    11821259        // convert degrees to radians
    1183         $angle = $angle + 180;
     1260        $angle = $angle+180;
    11841261        $angle = deg2rad($angle);
    1185        
    1186        
    1187        
     1262
     1263
    11881264        $src_x = imagesx($src_img);
    11891265        $src_y = imagesy($src_img);
    1190        
    1191        
     1266
     1267
    11921268        $center_x = floor(($src_x-1)/2);
    11931269        $center_y = floor(($src_y-1)/2);
    1194        
     1270
    11951271        $cosangle = cos($angle);
    11961272        $sinangle = sin($angle);
     
    11991275        // des rotations a angle droit
    12001276        if (!$droit) {
    1201                 $corners=array(array(0,0), array($src_x,0), array($src_x,$src_y), array(0,$src_y));
    1202        
    1203                 foreach($corners as $key=>$value) {
    1204                         $value[0]-=$center_x;        //Translate coords to center for rotation
    1205                         $value[1]-=$center_y;
    1206                         $temp=array();
    1207                         $temp[0]=$value[0]*$cosangle+$value[1]*$sinangle;
    1208                         $temp[1]=$value[1]*$cosangle-$value[0]*$sinangle;
    1209                         $corners[$key]=$temp;   
    1210                 }
    1211            
    1212                 $min_x=1000000000000000;
    1213                 $max_x=-1000000000000000;
    1214                 $min_y=1000000000000000;
    1215                 $max_y=-1000000000000000;
    1216            
    1217                 foreach($corners as $key => $value) {
    1218                         if($value[0]<$min_x)
    1219                                 $min_x=$value[0];
    1220                         if($value[0]>$max_x)
    1221                                 $max_x=$value[0];
    1222                        
    1223                         if($value[1]<$min_y)
    1224                                 $min_y=$value[1];
    1225                         if($value[1]>$max_y)
    1226                                 $max_y=$value[1];
    1227           }
    1228        
    1229                 $rotate_width=ceil($max_x-$min_x);
    1230                 $rotate_height=ceil($max_y-$min_y);
    1231         }
    1232         else {
     1277                $corners = array(array(0, 0), array($src_x, 0), array($src_x, $src_y), array(0, $src_y));
     1278
     1279                foreach ($corners as $key => $value) {
     1280                        $value[0] -= $center_x;        //Translate coords to center for rotation
     1281                        $value[1] -= $center_y;
     1282                        $temp = array();
     1283                        $temp[0] = $value[0]*$cosangle+$value[1]*$sinangle;
     1284                        $temp[1] = $value[1]*$cosangle-$value[0]*$sinangle;
     1285                        $corners[$key] = $temp;
     1286                }
     1287
     1288                $min_x = 1000000000000000;
     1289                $max_x = -1000000000000000;
     1290                $min_y = 1000000000000000;
     1291                $max_y = -1000000000000000;
     1292
     1293                foreach ($corners as $key => $value) {
     1294                        if ($value[0] < $min_x) {
     1295                                $min_x = $value[0];
     1296                        }
     1297                        if ($value[0] > $max_x) {
     1298                                $max_x = $value[0];
     1299                        }
     1300
     1301                        if ($value[1] < $min_y) {
     1302                                $min_y = $value[1];
     1303                        }
     1304                        if ($value[1] > $max_y) {
     1305                                $max_y = $value[1];
     1306                        }
     1307                }
     1308
     1309                $rotate_width = ceil($max_x-$min_x);
     1310                $rotate_height = ceil($max_y-$min_y);
     1311        } else {
    12331312                if ($rot == 180) {
    12341313                        $rotate_height = $src_y;
     
    12401319                $bicubic = false;
    12411320        }
    1242        
    1243        
    1244         $rotate=imagecreatetruecolor($rotate_width,$rotate_height);
     1321
     1322
     1323        $rotate = imagecreatetruecolor($rotate_width, $rotate_height);
    12451324        imagealphablending($rotate, false);
    12461325        imagesavealpha($rotate, true);
    1247        
     1326
    12481327        $cosangle = cos($angle);
    12491328        $sinangle = sin($angle);
    1250    
     1329
    12511330        // arrondir pour rotations angle droit (car cos et sin dans {-1,0,1})
    12521331        if ($droit) {
     
    12581337        $newcenter_y = ($rotate_height-1)/2;
    12591338
    1260    
     1339
    12611340        for ($y = 0; $y < $rotate_height; $y++) {
    12621341                for ($x = 0; $x < $rotate_width; $x++) {
    12631342                        // rotate...
    1264                         $old_x = ((($newcenter_x-$x) * $cosangle + ($newcenter_y-$y) * $sinangle))
    1265                          + $center_x;
    1266                         $old_y = ((($newcenter_y-$y) * $cosangle - ($newcenter_x-$x) * $sinangle))
    1267                          + $center_y; 
    1268          
     1343                        $old_x = ((($newcenter_x-$x)*$cosangle+($newcenter_y-$y)*$sinangle))
     1344                                +$center_x;
     1345                        $old_y = ((($newcenter_y-$y)*$cosangle-($newcenter_x-$x)*$sinangle))
     1346                                +$center_y;
     1347
    12691348                        $old_x = ceil($old_x);
    12701349                        $old_y = ceil($old_y);
    1271          
    1272                         if ( $old_x >= 0 && $old_x < $src_x
    1273                          && $old_y >= 0 && $old_y < $src_y ) {
     1350
     1351                        if ($old_x >= 0 && $old_x < $src_x
     1352                                && $old_y >= 0 && $old_y < $src_y
     1353                        ) {
    12741354                                if ($bicubic == true) {
    12751355                                        $xo = $old_x;
     
    12791359                                        $y0 = floor($yo);
    12801360                                        $y1 = ceil($yo);
    1281        
     1361
    12821362                                        // on prend chaque point, mais on pondere en fonction de la distance
    1283                                         $rgb = ImageColorAt($src_img, $x0, $y0); 
     1363                                        $rgb = ImageColorAt($src_img, $x0, $y0);
    12841364                                        $a1 = ($rgb >> 24) & 0xFF;
    12851365                                        $r1 = ($rgb >> 16) & 0xFF;
     
    12871367                                        $b1 = $rgb & 0xFF;
    12881368                                        $d1 = _image_distance_pixel($xo, $yo, $x0, $y0);
    1289                                        
    1290                                         $rgb = ImageColorAt($src_img, $x1, $y0); 
     1369
     1370                                        $rgb = ImageColorAt($src_img, $x1, $y0);
    12911371                                        $a2 = ($rgb >> 24) & 0xFF;
    12921372                                        $r2 = ($rgb >> 16) & 0xFF;
     
    12941374                                        $b2 = $rgb & 0xFF;
    12951375                                        $d2 = _image_distance_pixel($xo, $yo, $x1, $y0);
    1296                                        
    1297                                         $rgb = ImageColorAt($src_img,$x0, $y1);
     1376
     1377                                        $rgb = ImageColorAt($src_img, $x0, $y1);
    12981378                                        $a3 = ($rgb >> 24) & 0xFF;
    12991379                                        $r3 = ($rgb >> 16) & 0xFF;
     
    13011381                                        $b3 = $rgb & 0xFF;
    13021382                                        $d3 = _image_distance_pixel($xo, $yo, $x0, $y1);
    1303                                        
    1304                                         $rgb = ImageColorAt($src_img,$x1, $y1);
     1383
     1384                                        $rgb = ImageColorAt($src_img, $x1, $y1);
    13051385                                        $a4 = ($rgb >> 24) & 0xFF;
    13061386                                        $r4 = ($rgb >> 16) & 0xFF;
     
    13081388                                        $b4 = $rgb & 0xFF;
    13091389                                        $d4 = _image_distance_pixel($xo, $yo, $x1, $y1);
    1310                                        
    1311                                         $ac1 = ((127-$a1) / 127);
    1312                                         $ac2 = ((127-$a2) / 127);
    1313                                         $ac3 = ((127-$a3) / 127);
    1314                                         $ac4 = ((127-$a4) / 127);
     1390
     1391                                        $ac1 = ((127-$a1)/127);
     1392                                        $ac2 = ((127-$a2)/127);
     1393                                        $ac3 = ((127-$a3)/127);
     1394                                        $ac4 = ((127-$a4)/127);
    13151395
    13161396                                        // limiter impact des couleurs transparentes,
    13171397                                        // mais attention tout transp: division par 0
    1318                                         if ($ac1*$d1 + $ac2*$d2 + $ac3+$d3 + $ac4+$d4 > 0) {
    1319                                                 if ($ac1 > 0) $d1 = $d1 * $ac1;
    1320                                                 if ($ac2 > 0) $d2 = $d2 * $ac2;
    1321                                                 if ($ac3 > 0) $d3 = $d3 * $ac3;
    1322                                                 if ($ac4 > 0) $d4 = $d4 * $ac4;
     1398                                        if ($ac1*$d1+$ac2*$d2+$ac3+$d3+$ac4+$d4 > 0) {
     1399                                                if ($ac1 > 0) {
     1400                                                        $d1 = $d1*$ac1;
     1401                                                }
     1402                                                if ($ac2 > 0) {
     1403                                                        $d2 = $d2*$ac2;
     1404                                                }
     1405                                                if ($ac3 > 0) {
     1406                                                        $d3 = $d3*$ac3;
     1407                                                }
     1408                                                if ($ac4 > 0) {
     1409                                                        $d4 = $d4*$ac4;
     1410                                                }
    13231411                                        }
    1324                                        
    1325                                         $tot  = $d1 + $d2 + $d3 + $d4;
     1412
     1413                                        $tot = $d1+$d2+$d3+$d4;
    13261414
    13271415                                        $r = round((($d1*$r1)+($d2*$r2)+($d3*$r3)+($d4*$r4))/$tot);
     
    13291417                                        $b = round((($d1*$b1+($d2*$b2)+$d3*$b3+$d4*$b4))/$tot);
    13301418                                        $a = round((($d1*$a1+($d2*$a2)+$d3*$a3+$d4*$a4))/$tot);
    1331                                         $color = imagecolorallocatealpha($src_img, $r,$g,$b,$a);
    1332                                 }
    1333                                 else {
     1419                                        $color = imagecolorallocatealpha($src_img, $r, $g, $b, $a);
     1420                                } else {
    13341421                                        $color = imagecolorat($src_img, round($old_x), round($old_y));
    13351422                                }
    1336                         }
    1337                         else {
     1423                        } else {
    13381424                                // this line sets the background colour
    13391425                                $color = imagecolorallocatealpha($src_img, 255, 255, 255, 127);
     
    13421428                }
    13431429        }
     1430
    13441431        return $rotate;
    13451432}
     
    13481435// la fonction "crop" n'est pas implementee...
    13491436// http://code.spip.net/@image_rotation
    1350 function image_rotation($im, $angle, $crop = false)
    1351 {
     1437function image_rotation($im, $angle, $crop = false) {
    13521438        $fonction = array('image_rotation', func_get_args());
    13531439        $image = _image_valeurs_trans($im, "rot-$angle-$crop", "png", $fonction);
    1354         if (!$image) return("");
    1355        
     1440        if (!$image) {
     1441                return ("");
     1442        }
     1443
    13561444        $im = $image["fichier"];
    13571445        $dest = $image["fichier_dest"];
    1358        
     1446
    13591447        $creer = $image["creer"];
    1360        
     1448
    13611449        if ($creer) {
    13621450                $effectuer_gd = true;
    13631451
    1364                 if(method_exists('Imagick','rotateImage')){
     1452                if (method_exists('Imagick', 'rotateImage')) {
    13651453                        $imagick = new Imagick();
    13661454                        $imagick->readImage($im);
     
    13681456                        $imagick->writeImage($dest);
    13691457                        $effectuer_gd = false;
    1370                 }
    1371                 else if ($GLOBALS['meta']['image_process'] == "convert") {
    1372                         if (_CONVERT_COMMAND!='') {
    1373                                 @define ('_CONVERT_COMMAND', 'convert');
    1374                                 @define ('_ROTATE_COMMAND', _CONVERT_COMMAND.' -background none -rotate %t %src %dest');
    1375                         } else
    1376                                 @define ('_ROTATE_COMMAND', '');
    1377                         if (_ROTATE_COMMAND!=='') {
    1378                                 $commande = str_replace(
    1379                                         array('%t', '%src', '%dest'),
    1380                                         array(
    1381                                                 $angle,
    1382                                                 escapeshellcmd($im),
    1383                                                 escapeshellcmd($dest)
    1384                                         ),
    1385                                         _ROTATE_COMMAND);
    1386                                 spip_log($commande);
    1387                                 exec($commande);
    1388                                 if (file_exists($dest)) // precaution
     1458                } else {
     1459                        if ($GLOBALS['meta']['image_process'] == "convert") {
     1460                                if (_CONVERT_COMMAND != '') {
     1461                                        @define('_CONVERT_COMMAND', 'convert');
     1462                                        @define('_ROTATE_COMMAND', _CONVERT_COMMAND . ' -background none -rotate %t %src %dest');
     1463                                } else {
     1464                                        @define('_ROTATE_COMMAND', '');
     1465                                }
     1466                                if (_ROTATE_COMMAND !== '') {
     1467                                        $commande = str_replace(
     1468                                                array('%t', '%src', '%dest'),
     1469                                                array(
     1470                                                        $angle,
     1471                                                        escapeshellcmd($im),
     1472                                                        escapeshellcmd($dest)
     1473                                                ),
     1474                                                _ROTATE_COMMAND);
     1475                                        spip_log($commande);
     1476                                        exec($commande);
     1477                                        if (file_exists($dest)) // precaution
     1478                                        {
     1479                                                $effectuer_gd = false;
     1480                                        }
     1481                                }
     1482                        }
     1483                        // cette variante genere-t-elle un fond transparent
     1484                        // dans les coins vide issus de la rotation ?
     1485                        elseif (function_exists('imagick_rotate')) {
     1486                                $handle = imagick_readimage($im);
     1487                                if ($handle && imagick_isopaqueimage($handle)) {
     1488                                        imagick_setfillcolor($handle, 'transparent');
     1489                                        imagick_rotate($handle, $angle);
     1490                                        imagick_writeimage($handle, $dest);
    13891491                                        $effectuer_gd = false;
    1390                         }
    1391                 }
    1392                 // cette variante genere-t-elle un fond transparent
    1393                 // dans les coins vide issus de la rotation ?
    1394                 elseif (function_exists('imagick_rotate')) {
    1395                         $handle = imagick_readimage ($im);
    1396                         if ($handle && imagick_isopaqueimage( $handle )) {
    1397                                 imagick_setfillcolor($handle, 'transparent');
    1398                                 imagick_rotate( $handle, $angle);
    1399                                 imagick_writeimage( $handle, $dest);
    1400                                 $effectuer_gd = false;
     1492                                }
    14011493                        }
    14021494                }
     
    14071499                        imagepalettetotruecolor($im);
    14081500                        $im = image_RotateBicubic($im, $angle, true);
    1409                         _image_gd_output($im,$image);
     1501                        _image_gd_output($im, $image);
    14101502                        imagedestroy($im);
    14111503                }
    14121504        }
    1413         list ($src_y,$src_x) = taille_image($dest);
    1414         return _image_ecrire_tag($image,array('src'=>$dest,'width'=>$src_x,'height'=>$src_y));
     1505        list ($src_y, $src_x) = taille_image($dest);
     1506
     1507        return _image_ecrire_tag($image, array('src' => $dest, 'width' => $src_x, 'height' => $src_y));
    14151508}
    14161509
     
    14191512// liste des fonctions: http://www.linux-nantes.org/~fmonnier/doc/imagick/
    14201513// http://code.spip.net/@image_imagick
    1421 function image_imagick () {
     1514function image_imagick() {
    14221515        $tous = func_get_args();
    14231516        $img = $tous[0];
    14241517        $fonc = $tous[1];
    1425         $tous[0]="";
     1518        $tous[0] = "";
    14261519        $tous_var = join($tous, "-");
    14271520
    14281521        $fonction = array('image_imagick', func_get_args());
    1429         $image = _image_valeurs_trans($img, "$tous_var", "png",$fonction);
    1430         if (!$image) return("");
    1431        
     1522        $image = _image_valeurs_trans($img, "$tous_var", "png", $fonction);
     1523        if (!$image) {
     1524                return ("");
     1525        }
     1526
    14321527        $im = $image["fichier"];
    14331528        $dest = $image["fichier_dest"];
    1434        
     1529
    14351530        $creer = $image["creer"];
    1436        
     1531
    14371532        if ($creer) {
    14381533                if (function_exists($fonc)) {
    14391534
    1440                         $handle = imagick_readimage ($im);
     1535                        $handle = imagick_readimage($im);
    14411536                        $arr[0] = $handle;
    1442                         for ($i=2; $i < count($tous); $i++) $arr[] = $tous[$i];
     1537                        for ($i = 2; $i < count($tous); $i++) {
     1538                                $arr[] = $tous[$i];
     1539                        }
    14431540                        call_user_func_array($fonc, $arr);
    14441541                        // Creer image dans fichier temporaire, puis renommer vers "bon" fichier
    14451542                        // de facon a eviter time_out pendant creation de l'image definitive
    14461543                        $tmp = preg_replace(",[.]png$,i", "-tmp.png", $dest);
    1447                         imagick_writeimage( $handle, $tmp);
     1544                        imagick_writeimage($handle, $tmp);
    14481545                        rename($tmp, $dest);
    1449                         ecrire_fichier($dest.".src",serialize($image));
    1450                 }
    1451         }
    1452         list ($src_y,$src_x) = taille_image($dest);
    1453         return _image_ecrire_tag($image,array('src'=>$dest,'width'=>$src_x,'height'=>$src_y));
     1546                        ecrire_fichier($dest . ".src", serialize($image));
     1547                }
     1548        }
     1549        list ($src_y, $src_x) = taille_image($dest);
     1550
     1551        return _image_ecrire_tag($image, array('src' => $dest, 'width' => $src_x, 'height' => $src_y));
    14541552
    14551553}
     
    14591557// ou plus foncee (gamma < 0)
    14601558// http://code.spip.net/@image_gamma
    1461 function image_gamma($im, $gamma = 0){
     1559function image_gamma($im, $gamma = 0) {
    14621560        include_spip('filtres/images_lib');
    14631561        $fonction = array('image_gamma', func_get_args());
    1464         $image = _image_valeurs_trans($im, "gamma-$gamma",false,$fonction);
    1465         if (!$image) return("");
    1466        
     1562        $image = _image_valeurs_trans($im, "gamma-$gamma", false, $fonction);
     1563        if (!$image) {
     1564                return ("");
     1565        }
     1566
    14671567        $x_i = $image["largeur"];
    14681568        $y_i = $image["hauteur"];
    1469        
     1569
    14701570        $im = $image["fichier"];
    14711571        $dest = $image["fichier_dest"];
    1472        
     1572
    14731573        $creer = $image["creer"];
    1474        
     1574
    14751575        if ($creer) {
    14761576                // Creation de l'image en deux temps
     
    14801580                $im_ = imagecreatetruecolor($x_i, $y_i);
    14811581                @imagealphablending($im_, false);
    1482                 @imagesavealpha($im_,true);
    1483                 $color_t = ImageColorAllocateAlpha( $im_, 255, 255, 255 , 127 );
    1484                 imagefill ($im_, 0, 0, $color_t);
     1582                @imagesavealpha($im_, true);
     1583                $color_t = ImageColorAllocateAlpha($im_, 255, 255, 255, 127);
     1584                imagefill($im_, 0, 0, $color_t);
    14851585                imagecopy($im_, $im, 0, 0, 0, 0, $x_i, $y_i);
    1486        
     1586
    14871587                for ($x = 0; $x < $x_i; $x++) {
    1488                         for ($y=0; $y < $y_i; $y++) {
     1588                        for ($y = 0; $y < $y_i; $y++) {
    14891589                                $rgb = ImageColorAt($im_, $x, $y);
    14901590                                $a = ($rgb >> 24) & 0xFF;
     
    14971597                                $b = _image_decale_composante($b, $gamma);
    14981598
    1499                                 $color = ImageColorAllocateAlpha( $im_, $r, $g, $b , $a );
    1500                                 imagesetpixel ($im_, $x, $y, $color);                   
    1501                         }
    1502                 }
    1503                 _image_gd_output($im_,$image);
    1504         }
    1505         return _image_ecrire_tag($image,array('src'=>$dest));
     1599                                $color = ImageColorAllocateAlpha($im_, $r, $g, $b, $a);
     1600                                imagesetpixel($im_, $x, $y, $color);
     1601                        }
     1602                }
     1603                _image_gd_output($im_, $image);
     1604        }
     1605
     1606        return _image_ecrire_tag($image, array('src' => $dest));
    15061607}
    15071608
     
    15111612//function image_sepia($im, $dr = 137, $dv = 111, $db = 94)
    15121613// http://code.spip.net/@image_sepia
    1513 function image_sepia($im, $rgb = "896f5e"){
     1614function image_sepia($im, $rgb = "896f5e") {
    15141615        include_spip('filtres/images_lib');
    1515        
    1516         if (!function_exists("imagecreatetruecolor")) return $im;
    1517        
     1616
     1617        if (!function_exists("imagecreatetruecolor")) {
     1618                return $im;
     1619        }
     1620
    15181621        $couleurs = _couleur_hex_to_dec($rgb);
    1519         $dr= $couleurs["red"];
    1520         $dv= $couleurs["green"];
    1521         $db= $couleurs["blue"];
    1522                
     1622        $dr = $couleurs["red"];
     1623        $dv = $couleurs["green"];
     1624        $db = $couleurs["blue"];
     1625
    15231626        $fonction = array('image_sepia', func_get_args());
    1524         $image = _image_valeurs_trans($im, "sepia-$dr-$dv-$db",false,$fonction);
    1525         if (!$image) return("");
    1526        
     1627        $image = _image_valeurs_trans($im, "sepia-$dr-$dv-$db", false, $fonction);
     1628        if (!$image) {
     1629                return ("");
     1630        }
     1631
    15271632        $x_i = $image["largeur"];
    15281633        $y_i = $image["hauteur"];
    1529        
     1634
    15301635        $im = $image["fichier"];
    15311636        $dest = $image["fichier_dest"];
    1532        
     1637
    15331638        $creer = $image["creer"];
    1534        
     1639
    15351640        if ($creer) {
    15361641                // Creation de l'image en deux temps
     
    15401645                $im_ = imagecreatetruecolor($x_i, $y_i);
    15411646                @imagealphablending($im_, false);
    1542                 @imagesavealpha($im_,true);
    1543                 $color_t = ImageColorAllocateAlpha( $im_, 255, 255, 255 , 127 );
    1544                 imagefill ($im_, 0, 0, $color_t);
     1647                @imagesavealpha($im_, true);
     1648                $color_t = ImageColorAllocateAlpha($im_, 255, 255, 255, 127);
     1649                imagefill($im_, 0, 0, $color_t);
    15451650                imagecopy($im_, $im, 0, 0, 0, 0, $x_i, $y_i);
    1546        
     1651
    15471652                for ($x = 0; $x < $x_i; $x++) {
    1548                         for ($y=0; $y < $y_i; $y++) {
     1653                        for ($y = 0; $y < $y_i; $y++) {
    15491654                                $rgb = ImageColorAt($im_, $x, $y);
    15501655                                $a = ($rgb >> 24) & 0xFF;
     
    15531658                                $b = $rgb & 0xFF;
    15541659
    1555                                 $r = round(.299 * $r + .587 * $g + .114 * $b);
     1660                                $r = round(.299*$r+.587*$g+.114*$b);
    15561661                                $g = $r;
    15571662                                $b = $r;
     
    15621667                                $b = _image_decale_composante_127($b, $db);
    15631668
    1564                                 $color = ImageColorAllocateAlpha( $im_, $r, $g, $b , $a );
    1565                                 imagesetpixel ($im_, $x, $y, $color);                   
    1566                         }
    1567                 }
    1568                 _image_gd_output($im_,$image);
     1669                                $color = ImageColorAllocateAlpha($im_, $r, $g, $b, $a);
     1670                                imagesetpixel($im_, $x, $y, $color);
     1671                        }
     1672                }
     1673                _image_gd_output($im_, $image);
    15691674                imagedestroy($im_);
    15701675                imagedestroy($im);
    15711676        }
    1572        
    1573         return _image_ecrire_tag($image,array('src'=>$dest));
     1677
     1678        return _image_ecrire_tag($image, array('src' => $dest));
    15741679}
    15751680
     
    15831688 *     Niveau de renforcement (entre 0 et 1)
    15841689 * @return string Code HTML de l'image
    1585 **/
    1586 function image_renforcement($im, $k = 0.5)
    1587 {
     1690 **/
     1691function image_renforcement($im, $k = 0.5) {
    15881692        $fonction = array('image_flou', func_get_args());
    1589         $image = _image_valeurs_trans($im, "renforcement-$k",false,$fonction);
    1590         if (!$image) return("");
     1693        $image = _image_valeurs_trans($im, "renforcement-$k", false, $fonction);
     1694        if (!$image) {
     1695                return ("");
     1696        }
    15911697
    15921698        $x_i = $image["largeur"];
     
    16011707                $im_ = imagecreatetruecolor($x_i, $y_i);
    16021708                @imagealphablending($im_, false);
    1603                 @imagesavealpha($im_,true);
    1604                 $color_t = ImageColorAllocateAlpha( $im_, 255, 255, 255 , 127 );
     1709                @imagesavealpha($im_, true);
     1710                $color_t = ImageColorAllocateAlpha($im_, 255, 255, 255, 127);
    16051711                imagefill($im_, 0, 0, $color_t);
    16061712
    16071713                for ($x = 0; $x < $x_i; $x++) {
    1608                         for ($y=0; $y < $y_i; $y++) {
    1609 
    1610                                 $rgb[1][0]=@imagecolorat($im,$x,$y-1);
    1611                                 $rgb[0][1]=@imagecolorat($im,$x-1,$y);
    1612                                 $rgb[1][1]=@imagecolorat($im,$x,$y);
    1613                                 $rgb[2][1]=@imagecolorat($im,$x+1,$y);
    1614                                 $rgb[1][2]=@imagecolorat($im,$x,$y+1);
    1615 
    1616                                 if ($x-1 < 0) $rgb[0][1] = $rgb[1][1];
    1617                                 if ($y-1 < 0) $rgb[1][0] = $rgb[1][1];
    1618                                 if ($x+1 == $x_i) $rgb[2][1] = $rgb[1][1];
    1619                                 if ($y+1 == $y_i) $rgb[1][2] = $rgb[1][1];
     1714                        for ($y = 0; $y < $y_i; $y++) {
     1715
     1716                                $rgb[1][0] = @imagecolorat($im, $x, $y-1);
     1717                                $rgb[0][1] = @imagecolorat($im, $x-1, $y);
     1718                                $rgb[1][1] = @imagecolorat($im, $x, $y);
     1719                                $rgb[2][1] = @imagecolorat($im, $x+1, $y);
     1720                                $rgb[1][2] = @imagecolorat($im, $x, $y+1);
     1721
     1722                                if ($x-1 < 0) {
     1723                                        $rgb[0][1] = $rgb[1][1];
     1724                                }
     1725                                if ($y-1 < 0) {
     1726                                        $rgb[1][0] = $rgb[1][1];
     1727                                }
     1728                                if ($x+1 == $x_i) {
     1729                                        $rgb[2][1] = $rgb[1][1];
     1730                                }
     1731                                if ($y+1 == $y_i) {
     1732                                        $rgb[1][2] = $rgb[1][1];
     1733                                }
    16201734
    16211735                                $a = ($rgb[1][1] >> 24) & 0xFF;
    1622                                 $r = -$k *(($rgb[1][0] >> 16) & 0xFF) +
    1623                                                  -$k *(($rgb[0][1] >> 16) & 0xFF) +
    1624                                                 (1+4*$k) *(($rgb[1][1] >> 16) & 0xFF) +
    1625                                                  -$k *(($rgb[2][1] >> 16) & 0xFF) +
    1626                                                  -$k *(($rgb[1][2] >> 16) & 0xFF) ;
    1627 
    1628                                 $g = -$k *(($rgb[1][0] >> 8) & 0xFF) +
    1629                                                  -$k *(($rgb[0][1] >> 8) & 0xFF) +
    1630                                                  (1+4*$k) *(($rgb[1][1] >> 8) & 0xFF) +
    1631                                                  -$k *(($rgb[2][1] >> 8) & 0xFF) +
    1632                                                  -$k *(($rgb[1][2] >> 8) & 0xFF) ;
    1633 
    1634                                 $b = -$k *($rgb[1][0] & 0xFF) +
    1635                                                  -$k *($rgb[0][1] & 0xFF) +
    1636                                                 (1+4*$k) *($rgb[1][1] & 0xFF) +
    1637                                                  -$k *($rgb[2][1] & 0xFF) +
    1638                                                  -$k *($rgb[1][2] & 0xFF) ;
    1639 
    1640                                 $r=min(255,max(0,$r));
    1641                                 $g=min(255,max(0,$g));
    1642                                 $b=min(255,max(0,$b));
    1643 
    1644 
    1645                                 $color = ImageColorAllocateAlpha( $im_, $r, $g, $b , $a );
    1646                                 imagesetpixel ($im_, $x, $y, $color);
    1647                         }
    1648                 }
    1649                 _image_gd_output($im_,$image);
    1650         }
    1651 
    1652         return _image_ecrire_tag($image,array('src'=>$dest));
     1736                                $r = -$k*(($rgb[1][0] >> 16) & 0xFF)+
     1737                                        -$k*(($rgb[0][1] >> 16) & 0xFF)+
     1738                                        (1+4*$k)*(($rgb[1][1] >> 16) & 0xFF)+
     1739                                        -$k*(($rgb[2][1] >> 16) & 0xFF)+
     1740                                        -$k*(($rgb[1][2] >> 16) & 0xFF);
     1741
     1742                                $g = -$k*(($rgb[1][0] >> 8) & 0xFF)+
     1743                                        -$k*(($rgb[0][1] >> 8) & 0xFF)+
     1744                                        (1+4*$k)*(($rgb[1][1] >> 8) & 0xFF)+
     1745                                        -$k*(($rgb[2][1] >> 8) & 0xFF)+
     1746                                        -$k*(($rgb[1][2] >> 8) & 0xFF);
     1747
     1748                                $b = -$k*($rgb[1][0] & 0xFF)+
     1749                                        -$k*($rgb[0][1] & 0xFF)+
     1750                                        (1+4*$k)*($rgb[1][1] & 0xFF)+
     1751                                        -$k*($rgb[2][1] & 0xFF)+
     1752                                        -$k*($rgb[1][2] & 0xFF);
     1753
     1754                                $r = min(255, max(0, $r));
     1755                                $g = min(255, max(0, $g));
     1756                                $b = min(255, max(0, $b));
     1757
     1758
     1759                                $color = ImageColorAllocateAlpha($im_, $r, $g, $b, $a);
     1760                                imagesetpixel($im_, $x, $y, $color);
     1761                        }
     1762                }
     1763                _image_gd_output($im_, $image);
     1764        }
     1765
     1766        return _image_ecrire_tag($image, array('src' => $dest));
    16531767}
    1654 
    1655 
    16561768
    16571769
     
    16731785 * @return mixed|null|string
    16741786 */
    1675 function image_fond_transparent($im, $background_color, $tolerance = 12, $alpha = 127, $coeff_lissage = 7)
    1676 {
     1787function image_fond_transparent($im, $background_color, $tolerance = 12, $alpha = 127, $coeff_lissage = 7) {
    16771788        $fonction = array('image_fond_transparent', func_get_args());
    1678         $image = _image_valeurs_trans($im, "fond_transparent-$background_color-$tolerance-$coeff_lissage-$alpha", "png", $fonction);
    1679         if (!$image) return("");
    1680        
     1789        $image = _image_valeurs_trans($im, "fond_transparent-$background_color-$tolerance-$coeff_lissage-$alpha", "png",
     1790                $fonction);
     1791        if (!$image) {
     1792                return ("");
     1793        }
     1794
    16811795        $x_i = $image["largeur"];
    16821796        $y_i = $image["hauteur"];
    1683        
     1797
    16841798        $im = $image["fichier"];
    16851799        $dest = $image["fichier_dest"];
    1686        
     1800
    16871801        $creer = $image["creer"];
    1688        
     1802
    16891803        if ($creer) {
    16901804                $bg = _couleur_hex_to_dec($background_color);
     
    16921806                $bg_g = $bg['green'];
    16931807                $bg_b = $bg['blue'];
    1694        
     1808
    16951809                // Creation de l'image en deux temps
    16961810                // de facon a conserver les GIF transparents
     
    16991813                $im2 = imagecreatetruecolor($x_i, $y_i);
    17001814                @imagealphablending($im2, false);
    1701                 @imagesavealpha($im2,true);
    1702                 $color_t = ImageColorAllocateAlpha( $im2, 255, 255, 255 , 127 );
    1703                 imagefill ($im2, 0, 0, $color_t);
     1815                @imagesavealpha($im2, true);
     1816                $color_t = ImageColorAllocateAlpha($im2, 255, 255, 255, 127);
     1817                imagefill($im2, 0, 0, $color_t);
    17041818                imagecopy($im2, $im, 0, 0, 0, 0, $x_i, $y_i);
    17051819
    17061820                $im_ = imagecreatetruecolor($x_i, $y_i);
    1707                 imagealphablending ($im_, FALSE );
    1708                 imagesavealpha ( $im_, TRUE );
    1709                 $color_f = ImageColorAllocateAlpha( $im_, 255, 255, 255 , $alpha );
     1821                imagealphablending($im_, false);
     1822                imagesavealpha($im_, true);
     1823                $color_f = ImageColorAllocateAlpha($im_, 255, 255, 255, $alpha);
    17101824
    17111825                for ($x = 0; $x < $x_i; $x++) {
     
    17151829                                $g = ($rgb >> 8) & 0xFF;
    17161830                                $b = $rgb & 0xFF;
    1717                                 if ((($d=abs($r-$bg_r)+abs($g-$bg_g)+abs($b-$bg_b))<=$tolerance)){
    1718                                         imagesetpixel ( $im_, $x, $y, $color_f );
    1719                                 }
    1720                                 elseif ($tolerance AND $d<=($coeff_lissage+1)*$tolerance){
     1831                                if ((($d = abs($r-$bg_r)+abs($g-$bg_g)+abs($b-$bg_b)) <= $tolerance)) {
     1832                                        imagesetpixel($im_, $x, $y, $color_f);
     1833                                } elseif ($tolerance AND $d <= ($coeff_lissage+1)*$tolerance) {
    17211834                                        $transp = round($alpha*(1-($d-$tolerance)/($coeff_lissage*$tolerance)));
    1722                                         $color_p = ImageColorAllocateAlpha( $im_, $r, $g, $b , $transp);                                       
    1723                                         imagesetpixel ( $im_, $x, $y, $color_p );
    1724                                 }
    1725                                 else
    1726                                         imagesetpixel ( $im_, $x, $y, $rgb );
    1727                         }
    1728                 }
    1729                 _image_gd_output($im_,$image);
     1835                                        $color_p = ImageColorAllocateAlpha($im_, $r, $g, $b, $transp);
     1836                                        imagesetpixel($im_, $x, $y, $color_p);
     1837                                } else {
     1838                                        imagesetpixel($im_, $x, $y, $rgb);
     1839                                }
     1840                        }
     1841                }
     1842                _image_gd_output($im_, $image);
    17301843                imagedestroy($im_);
    17311844                imagedestroy($im);
     
    17331846        }
    17341847
    1735         return _image_ecrire_tag($image,array('src'=>$dest));
     1848        return _image_ecrire_tag($image, array('src' => $dest));
    17361849}
     1850
    17371851?>
  • _core_/plugins/filtres_images/filtres/images_typo.php

    r93092 r93611  
    1010\***************************************************************************/
    1111
    12 if (!defined('_ECRIRE_INC_VERSION')) return;
     12if (!defined('_ECRIRE_INC_VERSION')) {
     13        return;
     14}
    1315
    1416// librairie de base du core
     
    2022
    2123// http://code.spip.net/@rtl_mb_ord
    22 function rtl_mb_ord($char){
    23 
    24         if (($c = ord($char)) < 216) return $c;
    25         else return 256 * rtl_mb_ord(substr($char, 0, -1)) + ord(substr($char, -1));
     24function rtl_mb_ord($char) {
     25
     26        if (($c = ord($char)) < 216) {
     27                return $c;
     28        } else {
     29                return 256*rtl_mb_ord(substr($char, 0, -1))+ord(substr($char, -1));
     30        }
    2631
    2732        /*      return (strlen($char) < 2) ?
     
    2934                                + ord(substr($char, -1));
    3035                               
    31         */                     
     36        */
    3237}
    3338
     
    3742        $rtl_prec = $rtl_global;
    3843
    39         $ponctuations = array("/", "-", "«","»", "“", "”", ",", ".", " ", ":", ";", "(", ")", "،", "؟", "?", "!", " ");
    40         foreach($ponctuations as $ponct) {
     44        $ponctuations = array("/", "-", "«", "»", "“", "”", ",", ".", " ", ":", ";", "(", ")", "،", "؟", "?", "!", " ");
     45        foreach ($ponctuations as $ponct) {
    4146                $ponctuation[$ponct] = true;
    4247        }
    4348
    44                
    4549
    4650        for ($i = 0; $i < spip_strlen($mot); $i++) {
    4751                $lettre = spip_substr($mot, $i, 1);
    48                
     52
    4953                $code = rtl_mb_ord($lettre);
    5054                # echo "<li>$lettre - $code";
    5155
    52                 if (($code >= 54928 && $code <= 56767) ||  ($code >= 15707294 && $code <= 15711164)) {
     56                if (($code >= 54928 && $code <= 56767) || ($code >= 15707294 && $code <= 15711164)) {
    5357                        $rtl = true;
    54                 }
    55                 else $rtl = false;
    56                
     58                } else {
     59                        $rtl = false;
     60                }
     61
    5762                if ($lettre == "٠" || $lettre == "١" || $lettre == "٢" || $lettre == "٣" || $lettre == "٤" || $lettre == "٥"
    58                                  || $lettre == "٦" || $lettre == "٧" || $lettre == "٨" || $lettre == "٩") $rtl = false;
    59                
     63                        || $lettre == "٦" || $lettre == "٧" || $lettre == "٨" || $lettre == "٩"
     64                ) {
     65                        $rtl = false;
     66                }
     67
    6068                if ($ponctuation[$lettre]) {
    6169                        # le truc mega casse-gueule de l'inversion unicode:
     
    6371                        # (et non automatiquement le rtl_global)
    6472                        $rtl = $rtl_prec;
    65                        
     73
    6674                        if ($rtl) {
    6775                                switch ($lettre) {
    68                                         case "(": $lettre = ")"; break;
    69                                         case ")": $lettre = "("; break;
    70                                         case "«": $lettre = "»"; break;
    71                                         case "»": $lettre = "«"; break;
    72                                         case "“": $lettre = "”"; break;
    73                                         case "”": $lettre = "“"; break;
     76                                        case "(":
     77                                                $lettre = ")";
     78                                                break;
     79                                        case ")":
     80                                                $lettre = "(";
     81                                                break;
     82                                        case "«":
     83                                                $lettre = "»";
     84                                                break;
     85                                        case "»":
     86                                                $lettre = "«";
     87                                                break;
     88                                        case "“":
     89                                                $lettre = "”";
     90                                                break;
     91                                        case "”":
     92                                                $lettre = "“";
     93                                                break;
    7494                                }
    7595                        }
    7696                }
    77                
    78                
    79                 if ($rtl) $res = $lettre.$res;
    80                 else $res = $res.$lettre;
    81                
     97
     98
     99                if ($rtl) {
     100                        $res = $lettre . $res;
     101                } else {
     102                        $res = $res . $lettre;
     103                }
     104
    82105                $rtl_prec = $rtl;
    83                
    84         }
     106
     107        }
     108
    85109        return $res;
    86110}
    87 
    88111
    89112
     
    93116        // hebreu + presentation A: 15707294 => 15710140
    94117        // arabe presentation: 15708336 => 15711164
    95        
     118
    96119        #       echo hexdec("efb7bc");
    97120
     
    101124
    102125        $arabic_letters = array(
    103                 array("ي", // lettre 0
     126                array(
     127                        "ي", // lettre 0
    104128                        "ﻱ",  // isolee 1
    105129                        "ﻳ", // debut 2
    106130                        "ﻴ", // milieu 3
    107                         "ﻲ"),
    108                 array("ب", // lettre 0
     131                        "ﻲ"
     132                ),
     133                array(
     134                        "ب", // lettre 0
    109135                        "ﺏ",  // isolee 1
    110136                        "ﺑ", // debut 2
    111137                        "ﺒ", // milieu 3
    112                         "ﺐ"),
    113                 array("ا", // lettre 0
     138                        "ﺐ"
     139                ),
     140                array(
     141                        "ا", // lettre 0
    114142                        "ا",  // isolee 1
    115143                        "ﺍ", // debut 2
    116144                        "ﺍ", // milieu 3
    117                         "ﺎ"),
    118                 array("إ", // lettre 0
     145                        "ﺎ"
     146                ),
     147                array(
     148                        "إ", // lettre 0
    119149                        "إ",  // isolee 1
    120150                        "إ", // debut 2
    121151                        "ﺈ", // milieu 3
    122                         "ﺈ"),
    123                 array("ل", // lettre 0
     152                        "ﺈ"
     153                ),
     154                array(
     155                        "ل", // lettre 0
    124156                        "ﻝ",  // isolee 1
    125157                        "ﻟ", // debut 2
    126158                        "ﻠ", // milieu 3
    127                         "ﻞ"),
    128                 array("خ", // lettre 0
     159                        "ﻞ"
     160                ),
     161                array(
     162                        "خ", // lettre 0
    129163                        "ﺥ",  // isolee 1
    130164                        "ﺧ", // debut 2
    131165                        "ﺨ", // milieu 3
    132                         "ﺦ"),
    133                 array("ج", // lettre 0
     166                        "ﺦ"
     167                ),
     168                array(
     169                        "ج", // lettre 0
    134170                        "ﺝ",  // isolee 1
    135171                        "ﺟ", // debut 2
    136172                        "ﺠ", // milieu 3
    137                         "ﺞ"),
    138                 array("س", // lettre 0
     173                        "ﺞ"
     174                ),
     175                array(
     176                        "س", // lettre 0
    139177                        "ﺱ",  // isolee 1
    140178                        "ﺳ", // debut 2
    141179                        "ﺴ", // milieu 3
    142                         "ﺲ"),
    143                 array("ن", // lettre 0
     180                        "ﺲ"
     181                ),
     182                array(
     183                        "ن", // lettre 0
    144184                        "ﻥ",  // isolee 1
    145185                        "ﻧ", // debut 2
    146186                        "ﻨ", // milieu 3
    147                         "ﻦ"),
    148                 array("ش", // lettre 0
     187                        "ﻦ"
     188                ),
     189                array(
     190                        "ش", // lettre 0
    149191                        "ﺵ",  // isolee 1
    150192                        "ﺷ", // debut 2
    151193                        "ﺸ", // milieu 3
    152                         "ﺶ"),
    153                 array("ق", // lettre 0
     194                        "ﺶ"
     195                ),
     196                array(
     197                        "ق", // lettre 0
    154198                        "ﻕ",  // isolee 1
    155199                        "ﻗ", // debut 2
    156200                        "ﻘ", // milieu 3
    157                         "ﻖ"),
    158                 array("ح", // lettre 0
     201                        "ﻖ"
     202                ),
     203                array(
     204                        "ح", // lettre 0
    159205                        "ﺡ",  // isolee 1
    160206                        "ﺣ", // debut 2
    161207                        "ﺤ", // milieu 3
    162                         "ﺢ"),
    163                 array("م", // lettre 0
     208                        "ﺢ"
     209                ),
     210                array(
     211                        "م", // lettre 0
    164212                        "ﻡ",  // isolee 1
    165213                        "ﻣ", // debut 2
    166214                        "ﻤ", // milieu 3
    167                         "ﻢ"),
    168                 array("ر", // lettre 0
     215                        "ﻢ"
     216                ),
     217                array(
     218                        "ر", // lettre 0
    169219                        "ر",  // isolee 1
    170220                        "ﺭ", // debut 2
    171221                        "ﺮ", // milieu 3
    172                         "ﺮ"),
    173                 array("ع", // lettre 0
     222                        "ﺮ"
     223                ),
     224                array(
     225                        "ع", // lettre 0
    174226                        "ع",  // isolee 1
    175227                        "ﻋ", // debut 2
    176228                        "ﻌ", // milieu 3
    177                         "ﻊ"),
    178                 array("و", // lettre 0
     229                        "ﻊ"
     230                ),
     231                array(
     232                        "و", // lettre 0
    179233                        "و",  // isolee 1
    180234                        "ﻭ", // debut 2
    181235                        "ﻮ", // milieu 3
    182                         "ﻮ"),
    183                 array("ة", // lettre 0
     236                        "ﻮ"
     237                ),
     238                array(
     239                        "ة", // lettre 0
    184240                        "ة",  // isolee 1
    185241                        "ة", // debut 2
    186242                        "ﺔ", // milieu 3
    187                         "ﺔ"),
    188                 array("ف", // lettre 0
     243                        "ﺔ"
     244                ),
     245                array(
     246                        "ف", // lettre 0
    189247                        "ﻑ",  // isolee 1
    190248                        "ﻓ", // debut 2
    191249                        "ﻔ", // milieu 3
    192                         "ﻒ"),
    193                 array("ﻻ", // lettre 0
     250                        "ﻒ"
     251                ),
     252                array(
     253                        "ﻻ", // lettre 0
    194254                        "ﻻ",  // isolee 1
    195255                        "ﻻ", // debut 2
    196256                        "ﻼ", // milieu 3
    197                         "ﻼ"),
    198                 array("ح", // lettre 0
     257                        "ﻼ"
     258                ),
     259                array(
     260                        "ح", // lettre 0
    199261                        "ﺡ",  // isolee 1
    200262                        "ﺣ", // debut 2
    201263                        "ﺤ", // milieu 3
    202                         "ﺢ"),
    203                 array("ت", // lettre 0
     264                        "ﺢ"
     265                ),
     266                array(
     267                        "ت", // lettre 0
    204268                        "ﺕ",  // isolee 1
    205269                        "ﺗ", // debut 2
    206270                        "ﺘ", // milieu 3
    207                         "ﺖ"),
    208                 array("ض", // lettre 0
     271                        "ﺖ"
     272                ),
     273                array(
     274                        "ض", // lettre 0
    209275                        "ﺽ",  // isolee 1
    210276                        "ﺿ", // debut 2
    211277                        "ﻀ", // milieu 3
    212                         "ﺾ"),
    213                 array("ك", // lettre 0
     278                        "ﺾ"
     279                ),
     280                array(
     281                        "ك", // lettre 0
    214282                        "ك",  // isolee 1
    215283                        "ﻛ", // debut 2
    216284                        "ﻜ", // milieu 3
    217                         "ﻚ"),
    218                 array("ه", // lettre 0
     285                        "ﻚ"
     286                ),
     287                array(
     288                        "ه", // lettre 0
    219289                        "ﻩ",  // isolee 1
    220290                        "ﻫ", // debut 2
    221291                        "ﻬ", // milieu 3
    222                         "ﻪ"),
    223                 array("ي", // lettre 0
     292                        "ﻪ"
     293                ),
     294                array(
     295                        "ي", // lettre 0
    224296                        "ي",  // isolee 1
    225297                        "ﻳ", // debut 2
    226298                        "ﻴ", // milieu 3
    227                         "ﻲ"),
    228                 array("ئ", // lettre 0
     299                        "ﻲ"
     300                ),
     301                array(
     302                        "ئ", // lettre 0
    229303                        "ﺉ",  // isolee 1
    230304                        "ﺋ", // debut 2
    231305                        "ﺌ", // milieu 3
    232                         "ﺊ"),
    233                 array("ص", // lettre 0
     306                        "ﺊ"
     307                ),
     308                array(
     309                        "ص", // lettre 0
    234310                        "ﺹ",  // isolee 1
    235311                        "ﺻ", // debut 2
    236312                        "ﺼ", // milieu 3
    237                         "ﺺ"),
    238                 array("ث", // lettre 0
     313                        "ﺺ"
     314                ),
     315                array(
     316                        "ث", // lettre 0
    239317                        "ﺙ",  // isolee 1
    240318                        "ﺛ", // debut 2
    241319                        "ﺜ", // milieu 3
    242                         "ﺚ"),
    243                 array("ﻷ", // lettre 0
     320                        "ﺚ"
     321                ),
     322                array(
     323                        "ﻷ", // lettre 0
    244324                        "ﻷ",  // isolee 1
    245325                        "ﻷ", // debut 2
    246326                        "ﻸ", // milieu 3
    247                         "ﻸ"),
    248                 array("د", // lettre 0
     327                        "ﻸ"
     328                ),
     329                array(
     330                        "د", // lettre 0
    249331                        "ﺩ",  // isolee 1
    250332                        "ﺩ", // debut 2
    251333                        "ﺪ", // milieu 3
    252                         "ﺪ"),
    253                 array("ذ", // lettre 0
     334                        "ﺪ"
     335                ),
     336                array(
     337                        "ذ", // lettre 0
    254338                        "ﺫ",  // isolee 1
    255339                        "ﺫ", // debut 2
    256340                        "ﺬ", // milieu 3
    257                         "ﺬ"),
    258                 array("ط", // lettre 0
     341                        "ﺬ"
     342                ),
     343                array(
     344                        "ط", // lettre 0
    259345                        "ﻁ",  // isolee 1
    260346                        "ﻃ", // debut 2
    261347                        "ﻄ", // milieu 3
    262                         "ﻂ"),
    263                 array("آ", // lettre 0
     348                        "ﻂ"
     349                ),
     350                array(
     351                        "آ", // lettre 0
    264352                        "آ",  // isolee 1
    265353                        "آ", // debut 2
    266354                        "ﺂ", // milieu 3
    267                         "ﺂ"),
    268                 array("أ", // lettre 0
     355                        "ﺂ"
     356                ),
     357                array(
     358                        "أ", // lettre 0
    269359                        "أ",  // isolee 1
    270360                        "أ", // debut 2
    271361                        "ﺄ", // milieu 3
    272                         "ﺄ"),
    273                 array("ؤ", // lettre 0
     362                        "ﺄ"
     363                ),
     364                array(
     365                        "ؤ", // lettre 0
    274366                        "ؤ",  // isolee 1
    275367                        "ؤ", // debut 2
    276368                        "ﺆ", // milieu 3
    277                         "ﺆ"),
    278                 array("ز", // lettre 0
     369                        "ﺆ"
     370                ),
     371                array(
     372                        "ز", // lettre 0
    279373                        "ز",  // isolee 1
    280374                        "ز", // debut 2
    281375                        "ﺰ", // milieu 3
    282                         "ﺰ"),
    283                 array("ظ", // lettre 0
     376                        "ﺰ"
     377                ),
     378                array(
     379                        "ظ", // lettre 0
    284380                        "ظ",  // isolee 1
    285381                        "ﻇ", // debut 2
    286382                        "ﻈ", // milieu 3
    287                         "ﻆ"),
    288                 array("غ", // lettre 0
     383                        "ﻆ"
     384                ),
     385                array(
     386                        "غ", // lettre 0
    289387                        "غ",  // isolee 1
    290388                        "ﻏ", // debut 2
    291389                        "ﻐ", // milieu 3
    292                         "ﻎ"),
    293                 array("ى", // lettre 0
     390                        "ﻎ"
     391                ),
     392                array(
     393                        "ى", // lettre 0
    294394                        "ى",  // isolee 1
    295395                        "ﯨ", // debut 2
    296396                        "ﯩ", // milieu 3
    297                         "ﻰ"),
    298                 array("پ", // lettre 0
     397                        "ﻰ"
     398                ),
     399                array(
     400                        "پ", // lettre 0
    299401                        "پ",  // isolee 1
    300402                        "ﭘ", // debut 2
    301403                        "ﭙ", // milieu 3
    302                         "ﭗ"),
    303                 array("چ", // lettre 0
     404                        "ﭗ"
     405                ),
     406                array(
     407                        "چ", // lettre 0
    304408                        "چ",  // isolee 1
    305409                        "ﭼ", // debut 2
    306410                        "ﭽ", // milieu 3
    307                         "ﭻ")
     411                        "ﭻ"
     412                )
    308413        );
    309        
    310         if(init_mb_string() AND mb_regex_encoding() !== "UTF-8") echo "Attention: dans php.ini, il faut indiquer:<br /><strong>mbstring.internal_encoding = UTF-8</strong>";
    311        
    312        
     414
     415        if (init_mb_string() AND mb_regex_encoding() !== "UTF-8") {
     416                echo "Attention: dans php.ini, il faut indiquer:<br /><strong>mbstring.internal_encoding = UTF-8</strong>";
     417        }
     418
     419
    313420        $texte = explode(" ", $texte);
    314        
     421
    315422        foreach ($texte as $mot) {
    316423                $res = "";
    317424
    318425                // Inserer des indicateurs de debut/fin
    319                 $mot = "^".$mot."^";
     426                $mot = "^" . $mot . "^";
    320427
    321428                $mot = preg_replace(",&nbsp;,u", " ", $mot);
     
    324431
    325432                // ponctuations
    326                 $ponctuations = array("/", "-", "«","»", "“", "”", ",", ".", " ", ":", ";", "(", ")", "،", "؟", "?", "!"," ");
    327                 foreach($ponctuations as $ponct) {
     433                $ponctuations = array("/", "-", "«", "»", "“", "”", ",", ".", " ", ":", ";", "(", ")", "،", "؟", "?", "!", " ");
     434                foreach ($ponctuations as $ponct) {
    328435                        $mot = str_replace("$ponct", "^$ponct^", $mot);
    329436                }
     
    361468                $mot = preg_replace(",لا,u", "ﻻ", $mot);
    362469                $mot = preg_replace(",لأ,u", "ﻷ", $mot);
    363                
    364                
     470
     471
    365472                foreach ($arabic_letters as $a_l) {
    366                         $mot = preg_replace(",([^\^])".$a_l[0]."([^\^]),u", "\\1".$a_l[3]."\\2", $mot);
    367                         $mot = preg_replace(",\^".$a_l[0]."([^\^]),u", "^".$a_l[2]."\\1", $mot);
    368                         $mot = preg_replace(",([^\^])".$a_l[0]."\^,u", "\\1".$a_l[4]."^", $mot);
     473                        $mot = preg_replace(",([^\^])" . $a_l[0] . "([^\^]),u", "\\1" . $a_l[3] . "\\2", $mot);
     474                        $mot = preg_replace(",\^" . $a_l[0] . "([^\^]),u", "^" . $a_l[2] . "\\1", $mot);
     475                        $mot = preg_replace(",([^\^])" . $a_l[0] . "\^,u", "\\1" . $a_l[4] . "^", $mot);
    369476                        // il semble qu'il ne soit pas necessaire de remplacer
    370477                        // la lettre isolee
    371478                        //                      $mot = preg_replace(",\^".$a_l[0]."\^,u", "^".$a_l[1]."^", $mot);
    372479                }
    373                
    374                                 $mot = preg_replace(",\^,u", "", $mot);
    375                
     480
     481                $mot = preg_replace(",\^,u", "", $mot);
     482
    376483                $res = $mot;
    377484                $res = rtl_reverse($mot, $rtl_global);
     
    385492                }
    386493                */
    387                
    388                
    389                 if ($rtl_global) $retour = $res . " " . $retour;
    390                 else $retour = $retour. " ".$res;
    391         }
    392        
    393        
     494
     495
     496                if ($rtl_global) {
     497                        $retour = $res . " " . $retour;
     498                } else {
     499                        $retour = $retour . " " . $res;
     500                }
     501        }
     502
     503
    394504        return $retour;
    395505}
     
    397507
    398508// http://code.spip.net/@printWordWrapped
    399 function printWordWrapped($image, $top, $left, $maxWidth, $font, $couleur, $text, $textSize, $align = "left", $hauteur_ligne = 0) {
     509function printWordWrapped(
     510        $image,
     511        $top,
     512        $left,
     513        $maxWidth,
     514        $font,
     515        $couleur,
     516        $text,
     517        $textSize,
     518        $align = "left",
     519        $hauteur_ligne = 0
     520) {
    400521        static $memps = array();
    401522        $fontps = false;
     
    405526
    406527        // calculer les couleurs ici, car fonctionnement different selon TTF ou PS
    407         $black = imagecolorallocatealpha($image, hexdec("0x{".substr($couleur, 0,2)."}"), hexdec("0x{".substr($couleur, 2,2)."}"), hexdec("0x{".substr($couleur, 4,2)."}"), 0);
    408         $grey2 = imagecolorallocatealpha($image, hexdec("0x{".substr($couleur, 0,2)."}"), hexdec("0x{".substr($couleur, 2,2)."}"), hexdec("0x{".substr($couleur, 4,2)."}"), 127);
     528        $black = imagecolorallocatealpha($image, hexdec("0x{" . substr($couleur, 0, 2) . "}"),
     529                hexdec("0x{" . substr($couleur, 2, 2) . "}"), hexdec("0x{" . substr($couleur, 4, 2) . "}"), 0);
     530        $grey2 = imagecolorallocatealpha($image, hexdec("0x{" . substr($couleur, 0, 2) . "}"),
     531                hexdec("0x{" . substr($couleur, 2, 2) . "}"), hexdec("0x{" . substr($couleur, 4, 2) . "}"), 127);
    409532
    410533        // Gaffe, T1Lib ne fonctionne carrement pas bien des qu'on sort de ASCII
     
    413536        // Si police Postscript et que fonction existe...
    414537        if (
    415         false AND
    416         strtolower(substr($font,-4)) == ".pfb"
    417         AND function_exists("imagepstext")) {
     538                false AND
     539                strtolower(substr($font, -4)) == ".pfb"
     540                AND function_exists("imagepstext")
     541        ) {
    418542                // Traitement specifique pour polices PostScript (experimental)
    419                 $textSizePs = round(1.32 * $textSize);
     543                $textSizePs = round(1.32*$textSize);
    420544                if (!$fontps = $memps["$font"]) {
    421545                        $fontps = imagepsloadfont($font);
     
    430554                $lettre = spip_substr($text, $i, 1);
    431555                $code = rtl_mb_ord($lettre);
    432                 if (($code >= 54928 && $code <= 56767) ||  ($code >= 15707294 && $code <= 15711164)) {
     556                if (($code >= 54928 && $code <= 56767) || ($code >= 15707294 && $code <= 15711164)) {
    433557                        $rtl_global = true;
    434558                }
     
    440564
    441565        // les espaces
    442         foreach($words as $k=>$v)
     566        foreach ($words as $k => $v) {
    443567                $words[$k] = str_replace(array('~'), array(' '), $v);
    444 
    445 
    446         if ($hauteur_ligne == 0) $lineHeight = floor($textSize * 1.3);
    447         else $lineHeight = $hauteur_ligne;
     568        }
     569
     570
     571        if ($hauteur_ligne == 0) {
     572                $lineHeight = floor($textSize*1.3);
     573        } else {
     574                $lineHeight = $hauteur_ligne;
     575        }
    448576
    449577        $dimensions_espace = imageftbbox($textSize, 0, $font, ' ', array());
    450         if ($dimensions_espace[2] < 0)
     578        if ($dimensions_espace[2] < 0) {
    451579                $dimensions_espace = imageftbbox($textSize, 0, $font, $line, array());
    452         $largeur_espace = $dimensions_espace[2] - $dimensions_espace[0];
     580        }
     581        $largeur_espace = $dimensions_espace[2]-$dimensions_espace[0];
    453582        $retour["espace"] = $largeur_espace;
    454583
     
    457586        $lines = array();
    458587        while (count($words) > 0) {
    459                
     588
    460589                $mot = $words[0];
    461                
    462                 if ($rtl_global) $mot = rtl_visuel($mot,$rtl_global);
    463        
    464                 $dimensions = imageftbbox($textSize, 0, $font, $line.' '.$mot, array());
    465                 $lineWidth = $dimensions[2] - $dimensions[0]; // get the length of this line, if the word is to be included
     590
     591                if ($rtl_global) {
     592                        $mot = rtl_visuel($mot, $rtl_global);
     593                }
     594
     595                $dimensions = imageftbbox($textSize, 0, $font, $line . ' ' . $mot, array());
     596                $lineWidth = $dimensions[2]-$dimensions[0]; // get the length of this line, if the word is to be included
    466597                if ($lineWidth > $maxWidth) { // if this makes the text wider that anticipated
    467598                        $lines[] = $line; // add the line to the others
    468599                        $line = ''; // empty it (the word will be added outside the loop)
    469600                }
    470                 $line .= ' '.$words[0]; // add the word to the current sentence
     601                $line .= ' ' . $words[0]; // add the word to the current sentence
    471602                $words = array_slice($words, 1); // remove the word from the array
    472603        }
    473         if ($line != '') { $lines[] = $line; } // add the last line to the others, if it isn't empty
    474         $height = count($lines) * $lineHeight; // the height of all the lines total
     604        if ($line != '') {
     605                $lines[] = $line;
     606        } // add the last line to the others, if it isn't empty
     607        $height = count($lines)*$lineHeight; // the height of all the lines total
    475608        // do the actual printing
    476609        $i = 0;
     
    480613        $largeur_max = 0;
    481614        foreach ($lines as $line) {
    482                 if ($rtl_global) $line = rtl_visuel($line, $rtl_global);
    483                
     615                if ($rtl_global) {
     616                        $line = rtl_visuel($line, $rtl_global);
     617                }
     618
    484619                $dimensions = imageftbbox($textSize, 0, $font, $line, array());
    485                 $largeur_ligne = $dimensions[2] - $dimensions[0];
    486                 if ($largeur_ligne > $largeur_max) $largeur_max = $largeur_ligne;
     620                $largeur_ligne = $dimensions[2]-$dimensions[0];
     621                if ($largeur_ligne > $largeur_max) {
     622                        $largeur_max = $largeur_ligne;
     623                }
    487624        }
    488625
    489626        foreach ($lines as $i => $line) {
    490                 if ($rtl_global) $line = rtl_visuel($line, $rtl_global);
     627                if ($rtl_global) {
     628                        $line = rtl_visuel($line, $rtl_global);
     629                }
    491630
    492631                $dimensions = imageftbbox($textSize, 0, $font, $line, array());
    493                 $largeur_ligne = $dimensions[2] - $dimensions[0];
    494                 if ($align == "right") $left_pos = $largeur_max - $largeur_ligne;
    495                 else if ($align == "center") $left_pos = floor(($largeur_max - $largeur_ligne)/2);
    496                 else $left_pos = 0;
    497                
    498                
     632                $largeur_ligne = $dimensions[2]-$dimensions[0];
     633                if ($align == "right") {
     634                        $left_pos = $largeur_max-$largeur_ligne;
     635                } else {
     636                        if ($align == "center") {
     637                                $left_pos = floor(($largeur_max-$largeur_ligne)/2);
     638                        } else {
     639                                $left_pos = 0;
     640                        }
     641                }
     642
     643
    499644                if ($fontps) {
    500645                        $line = trim($line);
    501                         imagepstext ($image, "$line", $fontps, $textSizePs, $black, $grey2, $left + $left_pos, $top + $lineHeight * $i, 0, 0, 0, 16);
    502                 }
    503                 else imagefttext($image, $textSize, 0, $left + $left_pos, $top + $lineHeight * $i, $black, $font, trim($line), array());
     646                        imagepstext($image, "$line", $fontps, $textSizePs, $black, $grey2, $left+$left_pos, $top+$lineHeight*$i, 0, 0, 0,
     647                                16);
     648                } else {
     649                        imagefttext($image, $textSize, 0, $left+$left_pos, $top+$lineHeight*$i, $black, $font, trim($line), array());
     650                }
    504651        }
    505652        $retour["height"] = $height;# + round(0.3 * $hauteur_ligne);
    506653        $retour["width"] = $largeur_max;
    507                  
     654
    508655        return $retour;
    509656}
     
    526673        $align: alignement left, right, center
    527674        */
    528        
     675
    529676        /**
    530677         * On définit les variables par défaut
     
    544691        $texte = $arg_list[0];
    545692        for ($i = 1; $i < $numargs; $i++) {
    546                 if (($p = strpos($arg_list[$i], "="))!==FALSE) {
     693                if (($p = strpos($arg_list[$i], "=")) !== false) {
    547694                        $nom_variable = substr($arg_list[$i], 0, $p);
    548695                        $val_variable = substr($arg_list[$i], $p+1);
     
    550697                }
    551698        }
    552        
    553         $variable = array_merge($variables_defaut,$variable);
     699
     700        $variable = array_merge($variables_defaut, $variable);
    554701        // Construire requete et nom fichier
    555         $text = str_replace("&nbsp;", "~", $texte);     
     702        $text = str_replace("&nbsp;", "~", $texte);
    556703        $text = preg_replace(",(\r|\n)+,ms", " ", $text);
    557704        include_spip('inc/charsets');
    558705        $text = html2unicode(strip_tags($text));
    559         if (strlen($text) == 0) return "";
     706        if (strlen($text) == 0) {
     707                return "";
     708        }
    560709
    561710        $taille = $variable["taille"];
    562         if ($taille < 1) $taille = 16;
     711        if ($taille < 1) {
     712                $taille = 16;
     713        }
    563714
    564715        $couleur = couleur_html_to_hex($variable["couleur"]);
    565         if (strlen($couleur) < 6) $couleur = "000000";
     716        if (strlen($couleur) < 6) {
     717                $couleur = "000000";
     718        }
    566719
    567720        $alt = $texte;
    568                
     721
    569722        $align = $variable["align"];
    570         if (!$variable["align"]) $align="left";
    571          
     723        if (!$variable["align"]) {
     724                $align = "left";
     725        }
     726
    572727        $police = $variable["police"];
    573         if (strlen($police) < 2) $police = "dustismo.ttf";
     728        if (strlen($police) < 2) {
     729                $police = "dustismo.ttf";
     730        }
    574731
    575732        $largeur = $variable["largeur"];
    576         if ($largeur < 5) $largeur = 600;
    577 
    578         if ($variable["hauteur_ligne"] > 0) $hauteur_ligne = $variable["hauteur_ligne"];
    579         else $hauteur_ligne = 0;
    580         if ($variable["padding"] > 0) $padding = $variable["padding"];
    581         else $padding = 0;
    582        
     733        if ($largeur < 5) {
     734                $largeur = 600;
     735        }
     736
     737        if ($variable["hauteur_ligne"] > 0) {
     738                $hauteur_ligne = $variable["hauteur_ligne"];
     739        } else {
     740                $hauteur_ligne = 0;
     741        }
     742        if ($variable["padding"] > 0) {
     743                $padding = $variable["padding"];
     744        } else {
     745                $padding = 0;
     746        }
    583747
    584748
     
    591755                && function_exists('imageCreateTrueColor');
    592756
    593        
    594         if (@file_exists($fichier))
     757
     758        if (@file_exists($fichier)) {
    595759                $image = $fichier;
    596         else if (!$flag_gd_typo)
    597                 return $texte;
    598         else {
    599                 $font = find_in_path('polices/'.$police);
    600                 if (!$font) {
    601                         spip_log(_T('fichier_introuvable', array('fichier' => $police)));
    602                         $font = find_in_path('polices/'."dustismo.ttf");
    603                 }
    604 
    605                 $imgbidon = imageCreateTrueColor($largeur, 45);
    606                 $retour = printWordWrapped($imgbidon, $taille+5, 0, $largeur, $font, $couleur, $text, $taille, 'left', $hauteur_ligne);
    607                 $hauteur = $retour["height"];
    608                 $largeur_reelle = $retour["width"];
    609                 $espace = $retour["espace"];
    610                 imagedestroy($imgbidon);
    611 
    612                 $im = imageCreateTrueColor($largeur_reelle-$espace+(2*$padding), $hauteur+5+(2*$padding));
    613                 imagealphablending ($im, FALSE );
    614                 imagesavealpha ( $im, TRUE );
    615                
    616                 // Creation de quelques couleurs
    617                
    618                 $grey2 = imagecolorallocatealpha($im, hexdec("0x{".substr($couleur, 0,2)."}"), hexdec("0x{".substr($couleur, 2,2)."}"), hexdec("0x{".substr($couleur, 4,2)."}"), 127);
    619                 ImageFilledRectangle ($im,0,0,$largeur_reelle+(2*$padding),$hauteur+5+(2*$padding),$grey2);
    620                
    621                 // Le texte a dessiner
    622                 printWordWrapped($im, $taille+5+$padding, $padding, $largeur, $font, $couleur, $text, $taille, $align, $hauteur_ligne);
    623                
    624                
    625                 // Utiliser imagepng() donnera un texte plus claire,
    626                 // compare a l'utilisation de la fonction imagejpeg()
    627                 _image_gd_output($im,array('fichier_dest'=>$fichier,'format_dest'=>'png'));
    628                 imagedestroy($im);
    629                
    630                 $image = $fichier;
     760        } else {
     761                if (!$flag_gd_typo) {
     762                        return $texte;
     763                } else {
     764                        $font = find_in_path('polices/' . $police);
     765                        if (!$font) {
     766                                spip_log(_T('fichier_introuvable', array('fichier' => $police)));
     767                                $font = find_in_path('polices/' . "dustismo.ttf");
     768                        }
     769
     770                        $imgbidon = imageCreateTrueColor($largeur, 45);
     771                        $retour = printWordWrapped($imgbidon, $taille+5, 0, $largeur, $font, $couleur, $text, $taille, 'left',
     772                                $hauteur_ligne);
     773                        $hauteur = $retour["height"];
     774                        $largeur_reelle = $retour["width"];
     775                        $espace = $retour["espace"];
     776                        imagedestroy($imgbidon);
     777
     778                        $im = imageCreateTrueColor($largeur_reelle-$espace+(2*$padding), $hauteur+5+(2*$padding));
     779                        imagealphablending($im, false);
     780                        imagesavealpha($im, true);
     781
     782                        // Creation de quelques couleurs
     783
     784                        $grey2 = imagecolorallocatealpha($im, hexdec("0x{" . substr($couleur, 0, 2) . "}"),
     785                                hexdec("0x{" . substr($couleur, 2, 2) . "}"), hexdec("0x{" . substr($couleur, 4, 2) . "}"), 127);
     786                        ImageFilledRectangle($im, 0, 0, $largeur_reelle+(2*$padding), $hauteur+5+(2*$padding), $grey2);
     787
     788                        // Le texte a dessiner
     789                        printWordWrapped($im, $taille+5+$padding, $padding, $largeur, $font, $couleur, $text, $taille, $align,
     790                                $hauteur_ligne);
     791
     792
     793                        // Utiliser imagepng() donnera un texte plus claire,
     794                        // compare a l'utilisation de la fonction imagejpeg()
     795                        _image_gd_output($im, array('fichier_dest' => $fichier, 'format_dest' => 'png'));
     796                        imagedestroy($im);
     797
     798                        $image = $fichier;
     799                }
    631800        }
    632801
     
    635804        $largeur = $dimensions[0];
    636805        $hauteur = $dimensions[1];
    637        
    638         return inserer_attribut("<img src='$image' width='$largeur' height='$hauteur' style='width:".$largeur."px;height:".$hauteur."px;' />", 'alt', $alt);
     806
     807        return inserer_attribut("<img src='$image' width='$largeur' height='$hauteur' style='width:" . $largeur . "px;height:" . $hauteur . "px;' />",
     808                'alt', $alt);
    639809}
    640810
  • _core_/plugins/filtres_images/images_fonctions.php

    r93092 r93611  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return;
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15}
    1416
    1517
     
    6870
    6971
    70 
    7172/**
    7273 * Extraire une couleur d'une image
     
    7980function extraire_image_couleur($img, $x = 10, $y = 6) {
    8081        include_spip('filtres/images_lib');
     82
    8183        return _image_couleur_extraire($img, $x, $y);
    8284}
     
    9092        include_spip('filtres/images_typo');
    9193        $tous = func_get_args();
     94
    9295        return call_user_func_array('produire_image_typo', $tous);
    9396}
  • _core_/plugins/filtres_images/inc/filtres_images.php

    r89285 r93611  
    1414 * Ce fichier ne sert plus
    1515 * Il est maintenu pour assurer la compatibilite des anciens scripts
    16  * 
     16 *
    1717 */
    1818
    19 if (!defined('_ECRIRE_INC_VERSION')) return;
     19if (!defined('_ECRIRE_INC_VERSION')) {
     20        return;
     21}
    2022
    2123// prise en charge des renomage de fonction
  • _core_/plugins/filtres_images/inc/filtres_images_compat.php

    r93092 r93611  
    1313 * Ce fichier ne sert pas
    1414 * Il est maintenu pour assurer la compatibilite des anciens scripts avec les anciens nommages de fonction
    15  * 
     15 *
    1616 */
    1717
    18 if (!defined('_ECRIRE_INC_VERSION')) return;
     18if (!defined('_ECRIRE_INC_VERSION')) {
     19        return;
     20}
    1921
    20 function couleur_dec_to_hex($red, $green, $blue) {include_spip('filtres/images_lib');return _couleur_dec_to_hex($red, $green, $blue);}
    21 function couleur_hex_to_dec($couleur) {include_spip('filtres/images_lib');return _couleur_hex_to_dec($couleur);}
    22 function couleur_rgb2hsv($R, $G, $B) {include_spip('filtres/images_lib');return _couleur_rgb2hsv($R, $G, $B);}
    23 function couleur_hsv2rgb($H, $S, $V) {include_spip('filtres/images_lib');return _couleur_hsv2rgb($H, $S, $V);}
    24 function couleur_rgb2hsl($R, $G, $B) {include_spip('filtres/images_lib');return _couleur_rgb2hsl($R, $G, $B);}
    25 function couleur_hsl2rgb($H, $S, $L) {include_spip('filtres/images_lib');return _couleur_hsl2rgb($H, $S, $L);}
    26 function image_couleur_extraire($img, $x = 10, $y = 6) {include_spip('filtres/images_lib');return _image_couleur_extraire($img, $x, $y);}
    27 function image_distance_pixel($xo, $yo, $x0, $y0) {include_spip('filtres/images_lib');return _image_distance_pixel($xo, $yo, $x0, $y0);}
    28 function image_decal_couleur($coul, $gamma) {include_spip('filtres/images_lib');return _image_decale_composante($coul, $gamma);}
    29 function image_decal_couleur_127($coul, $val) {include_spip('filtres/images_lib');return _image_decale_composante_127 ($coul, $val);}
     22function couleur_dec_to_hex($red, $green, $blue) {
     23        include_spip('filtres/images_lib');
    3024
    31 function image_creer_vignette($valeurs, $maxWidth, $maxHeight, $process = 'AUTO', $force = false, $test_cache_only = false) {include_spip('inc/filtres_images_lib'); return _image_creer_vignette($valeurs, $maxWidth, $maxHeight, $process, $force, $test_cache_only);}
    32 function image_ecrire_tag($valeurs, $surcharge){include_spip('inc/filtres_images_lib'); return _image_ecrire_tag($valeurs, $surcharge);}
    33 function image_gd_output($img, $valeurs, $qualite = _IMG_GD_QUALITE){include_spip('inc/filtres_images_lib'); return _image_gd_output($img, $valeurs, $qualite);}
    34 function image_imagepng($img, $fichier) {include_spip('inc/filtres_images_lib'); return _image_imagepng($img, $fichier);}
    35 function image_imagegif($img, $fichier) {include_spip('inc/filtres_images_lib'); return _image_imagegif($img, $fichier);}
    36 function image_imagejpg($img, $fichier, $qualite = _IMG_GD_QUALITE) {include_spip('inc/filtres_images_lib'); return image_imagejpg($img, $fichier, $qualite = _IMG_GD_QUALITE);}
    37 function image_imageico($img, $fichier) {include_spip('inc/filtres_images_lib'); return _image_imageico($img, $fichier);}
    38 function image_ratio ($srcWidth, $srcHeight, $maxWidth, $maxHeight) {include_spip('inc/filtres_images_lib');return _image_ratio ($srcWidth, $srcHeight, $maxWidth, $maxHeight);}
    39 function image_tag_changer_taille($tag, $width, $height, $style = false){include_spip('inc/filtres_images_lib');return _image_tag_changer_taille($tag, $width, $height, $style);}
    40 function image_valeurs_trans($img, $effet, $forcer_format = false, $fonction_creation = NULL) {include_spip('inc/filtres_images_lib'); return _image_valeurs_trans($img, $effet, $forcer_format, $fonction_creation);}
     25        return _couleur_dec_to_hex($red, $green, $blue);
     26}
     27
     28function couleur_hex_to_dec($couleur) {
     29        include_spip('filtres/images_lib');
     30
     31        return _couleur_hex_to_dec($couleur);
     32}
     33
     34function couleur_rgb2hsv($R, $G, $B) {
     35        include_spip('filtres/images_lib');
     36
     37        return _couleur_rgb2hsv($R, $G, $B);
     38}
     39
     40function couleur_hsv2rgb($H, $S, $V) {
     41        include_spip('filtres/images_lib');
     42
     43        return _couleur_hsv2rgb($H, $S, $V);
     44}
     45
     46function couleur_rgb2hsl($R, $G, $B) {
     47        include_spip('filtres/images_lib');
     48
     49        return _couleur_rgb2hsl($R, $G, $B);
     50}
     51
     52function couleur_hsl2rgb($H, $S, $L) {
     53        include_spip('filtres/images_lib');
     54
     55        return _couleur_hsl2rgb($H, $S, $L);
     56}
     57
     58function image_couleur_extraire($img, $x = 10, $y = 6) {
     59        include_spip('filtres/images_lib');
     60
     61        return _image_couleur_extraire($img, $x, $y);
     62}
     63
     64function image_distance_pixel($xo, $yo, $x0, $y0) {
     65        include_spip('filtres/images_lib');
     66
     67        return _image_distance_pixel($xo, $yo, $x0, $y0);
     68}
     69
     70function image_decal_couleur($coul, $gamma) {
     71        include_spip('filtres/images_lib');
     72
     73        return _image_decale_composante($coul, $gamma);
     74}
     75
     76function image_decal_couleur_127($coul, $val) {
     77        include_spip('filtres/images_lib');
     78
     79        return _image_decale_composante_127($coul, $val);
     80}
     81
     82function image_creer_vignette(
     83        $valeurs,
     84        $maxWidth,
     85        $maxHeight,
     86        $process = 'AUTO',
     87        $force = false,
     88        $test_cache_only = false
     89) {
     90        include_spip('inc/filtres_images_lib');
     91
     92        return _image_creer_vignette($valeurs, $maxWidth, $maxHeight, $process, $force, $test_cache_only);
     93}
     94
     95function image_ecrire_tag($valeurs, $surcharge) {
     96        include_spip('inc/filtres_images_lib');
     97
     98        return _image_ecrire_tag($valeurs, $surcharge);
     99}
     100
     101function image_gd_output($img, $valeurs, $qualite = _IMG_GD_QUALITE) {
     102        include_spip('inc/filtres_images_lib');
     103
     104        return _image_gd_output($img, $valeurs, $qualite);
     105}
     106
     107function image_imagepng($img, $fichier) {
     108        include_spip('inc/filtres_images_lib');
     109
     110        return _image_imagepng($img, $fichier);
     111}
     112
     113function image_imagegif($img, $fichier) {
     114        include_spip('inc/filtres_images_lib');
     115
     116        return _image_imagegif($img, $fichier);
     117}
     118
     119function image_imagejpg($img, $fichier, $qualite = _IMG_GD_QUALITE) {
     120        include_spip('inc/filtres_images_lib');
     121
     122        return image_imagejpg($img, $fichier, $qualite = _IMG_GD_QUALITE);
     123}
     124
     125function image_imageico($img, $fichier) {
     126        include_spip('inc/filtres_images_lib');
     127
     128        return _image_imageico($img, $fichier);
     129}
     130
     131function image_ratio($srcWidth, $srcHeight, $maxWidth, $maxHeight) {
     132        include_spip('inc/filtres_images_lib');
     133
     134        return _image_ratio($srcWidth, $srcHeight, $maxWidth, $maxHeight);
     135}
     136
     137function image_tag_changer_taille($tag, $width, $height, $style = false) {
     138        include_spip('inc/filtres_images_lib');
     139
     140        return _image_tag_changer_taille($tag, $width, $height, $style);
     141}
     142
     143function image_valeurs_trans($img, $effet, $forcer_format = false, $fonction_creation = null) {
     144        include_spip('inc/filtres_images_lib');
     145
     146        return _image_valeurs_trans($img, $effet, $forcer_format, $fonction_creation);
     147}
    41148
    42149// Pour assurer la compatibilite avec les anciens nom des filtres image_xxx
     
    45152function reduire_image($texte, $taille = -1, $taille_y = -1) {
    46153        return filtrer('image_graver',
    47                 filtrer('image_reduire',$texte, $taille, $taille_y)
     154                filtrer('image_reduire', $texte, $taille, $taille_y)
    48155        );
    49156}
     157
    50158// http://code.spip.net/@valeurs_image_trans
    51159function valeurs_image_trans($img, $effet, $forcer_format = false) {
    52160        include_spip('inc/filtres_images_lib_mini');
     161
    53162        return _image_valeurs_trans($img, $effet, $forcer_format = false);
    54163}
  • _core_/plugins/filtres_images/tests/_couleur_hsl2rgb.php

    r71265 r93611  
    55 *
    66 * genere automatiquement par TestBuilder
    7  * le 
     7 * le
    88 */
    99
    1010
    1111$test = '_couleur_hsl2rgb';
    12         $remonte = "../";
    13         while (!is_dir($remonte."ecrire"))
    14                 $remonte = "../$remonte";
    15         require $remonte.'tests/test.inc';
    16         find_in_path("filtres/images_lib.php",'',true);
     12$remonte = "../";
     13while (!is_dir($remonte . "ecrire")) {
     14        $remonte = "../$remonte";
     15}
     16require $remonte . 'tests/test.inc';
     17find_in_path("filtres/images_lib.php", '', true);
    1718
    18         //
    19         // hop ! on y va
    20         //
    21         $err = tester_fun('_couleur_hsl2rgb', essais__couleur_hsl2rgb());
    22        
    23         // si le tableau $err est pas vide ca va pas
    24         if ($err) {
    25                 die ('<dl>' . join('', $err) . '</dl>');
    26         }
     19//
     20// hop ! on y va
     21//
     22$err = tester_fun('_couleur_hsl2rgb', essais__couleur_hsl2rgb());
    2723
    28         echo "OK";
    29        
     24// si le tableau $err est pas vide ca va pas
     25if ($err) {
     26        die ('<dl>' . join('', $err) . '</dl>');
     27}
    3028
    31         function essais__couleur_hsl2rgb(){
    32                 $essais = array (
    33   0 =>
    34   array (
    35     0 =>
    36     array (
    37       'r' => 0,
    38       'g' => 0,
    39       'b' => 0,
    40     ),
    41     1 => 0,
    42     2 => 0,
    43     3 => 0,
    44   ),
    45   1 =>
    46   array (
    47     0 =>
    48     array (
    49       'r' => 63,
    50       'g' => 63,
    51       'b' => 63,
    52     ),
    53     1 => 0,
    54     2 => 0,
    55     3 => 0.25,
    56   ),
    57   2 =>
    58   array (
    59     0 =>
    60     array (
    61       'r' => 127,
    62       'g' => 127,
    63       'b' => 127,
    64     ),
    65     1 => 0,
    66     2 => 0,
    67     3 => 0.5,
    68   ),
    69   3 =>
    70   array (
    71     0 =>
    72     array (
    73       'r' => 191,
    74       'g' => 191,
    75       'b' => 191,
    76     ),
    77     1 => 0,
    78     2 => 0,
    79     3 => 0.75,
    80   ),
    81   4 =>
    82   array (
    83     0 =>
    84     array (
    85       'r' => 255,
    86       'g' => 255,
    87       'b' => 255,
    88     ),
    89     1 => 0,
    90     2 => 0,
    91     3 => 1,
    92   ),
    93   5 =>
    94   array (
    95     0 =>
    96     array (
    97       'r' => 0,
    98       'g' => 0,
    99       'b' => 0,
    100     ),
    101     1 => 0,
    102     2 => 0.25,
    103     3 => 0,
    104   ),
    105   6 =>
    106   array (
    107     0 =>
    108     array (
    109       'r' => 79,
    110       'g' => 47,
    111       'b' => 47,
    112     ),
    113     1 => 0,
    114     2 => 0.25,
    115     3 => 0.25,
    116   ),
    117   7 =>
    118   array (
    119     0 =>
    120     array (
    121       'r' => 159,
    122       'g' => 95,
    123       'b' => 95,
    124     ),
    125     1 => 0,
    126     2 => 0.25,
    127     3 => 0.5,
    128   ),
    129   8 =>
    130   array (
    131     0 =>
    132     array (
    133       'r' => 207,
    134       'g' => 175,
    135       'b' => 175,
    136     ),
    137     1 => 0,
    138     2 => 0.25,
    139     3 => 0.75,
    140   ),
    141   9 =>
    142   array (
    143     0 =>
    144     array (
    145       'r' => 255,
    146       'g' => 255,
    147       'b' => 255,
    148     ),
    149     1 => 0,
    150     2 => 0.25,
    151     3 => 1,
    152   ),
    153   10 =>
    154   array (
    155     0 =>
    156     array (
    157       'r' => 0,
    158       'g' => 0,
    159       'b' => 0,
    160     ),
    161     1 => 0,
    162     2 => 0.5,
    163     3 => 0,
    164   ),
    165   11 =>
    166   array (
    167     0 =>
    168     array (
    169       'r' => 95,
    170       'g' => 31,
    171       'b' => 31,
    172     ),
    173     1 => 0,
    174     2 => 0.5,
    175     3 => 0.25,
    176   ),
    177   12 =>
    178   array (
    179     0 =>
    180     array (
    181       'r' => 191,
    182       'g' => 63,
    183       'b' => 63,
    184     ),
    185     1 => 0,
    186     2 => 0.5,
    187     3 => 0.5,
    188   ),
    189   13 =>
    190   array (
    191     0 =>
    192     array (
    193       'r' => 223,
    194       'g' => 159,
    195       'b' => 159,
    196     ),
    197     1 => 0,
    198     2 => 0.5,
    199     3 => 0.75,
    200   ),
    201   14 =>
    202   array (
    203     0 =>
    204     array (
    205       'r' => 255,
    206       'g' => 255,
    207       'b' => 255,
    208     ),
    209     1 => 0,
    210     2 => 0.5,
    211     3 => 1,
    212   ),
    213   15 =>
    214   array (
    215     0 =>
    216     array (
    217       'r' => 0,
    218       'g' => 0,
    219       'b' => 0,
    220     ),
    221     1 => 0,
    222     2 => 0.75,
    223     3 => 0,
    224   ),
    225   16 =>
    226   array (
    227     0 =>
    228     array (
    229       'r' => 111,
    230       'g' => 15,
    231       'b' => 15,
    232     ),
    233     1 => 0,
    234     2 => 0.75,
    235     3 => 0.25,
    236   ),
    237   17 =>
    238   array (
    239     0 =>
    240     array (
    241       'r' => 223,
    242       'g' => 31,
    243       'b' => 31,
    244     ),
    245     1 => 0,
    246     2 => 0.75,
    247     3 => 0.5,
    248   ),
    249   18 =>
    250   array (
    251     0 =>
    252     array (
    253       'r' => 239,
    254       'g' => 143,
    255       'b' => 143,
    256     ),
    257     1 => 0,
    258     2 => 0.75,
    259     3 => 0.75,
    260   ),
    261   19 =>
    262   array (
    263     0 =>
    264     array (
    265       'r' => 255,
    266       'g' => 255,
    267       'b' => 255,
    268     ),
    269     1 => 0,
    270     2 => 0.75,
    271     3 => 1,
    272   ),
    273   20 =>
    274   array (
    275     0 =>
    276     array (
    277       'r' => 0,
    278       'g' => 0,
    279       'b' => 0,
    280     ),
    281     1 => 0,
    282     2 => 1,
    283     3 => 0,
    284   ),
    285   21 =>
    286   array (
    287     0 =>
    288     array (
    289       'r' => 127,
    290       'g' => 0,
    291       'b' => 0,
    292     ),
    293     1 => 0,
    294     2 => 1,
    295     3 => 0.25,
    296   ),
    297   22 =>
    298   array (
    299     0 =>
    300     array (
    301       'r' => 255,
    302       'g' => 0,
    303       'b' => 0,
    304     ),
    305     1 => 0,
    306     2 => 1,
    307     3 => 0.5,
    308   ),
    309   23 =>
    310   array (
    311     0 =>
    312     array (
    313       'r' => 255,
    314       'g' => 127,
    315       'b' => 127,
    316     ),
    317     1 => 0,
    318     2 => 1,
    319     3 => 0.75,
    320   ),
    321   24 =>
    322   array (
    323     0 =>
    324     array (
    325       'r' => 255,
    326       'g' => 255,
    327       'b' => 255,
    328     ),
    329     1 => 0,
    330     2 => 1,
    331     3 => 1,
    332   ),
    333   25 =>
    334   array (
    335     0 =>
    336     array (
    337       'r' => 0,
    338       'g' => 0,
    339       'b' => 0,
    340     ),
    341     1 => 0.25,
    342     2 => 0,
    343     3 => 0,
    344   ),
    345   26 =>
    346   array (
    347     0 =>
    348     array (
    349       'r' => 63,
    350       'g' => 63,
    351       'b' => 63,
    352     ),
    353     1 => 0.25,
    354     2 => 0,
    355     3 => 0.25,
    356   ),
    357   27 =>
    358   array (
    359     0 =>
    360     array (
    361       'r' => 127,
    362       'g' => 127,
    363       'b' => 127,
    364     ),
    365     1 => 0.25,
    366     2 => 0,
    367     3 => 0.5,
    368   ),
    369   28 =>
    370   array (
    371     0 =>
    372     array (
    373       'r' => 191,
    374       'g' => 191,
    375       'b' => 191,
    376     ),
    377     1 => 0.25,
    378     2 => 0,
    379     3 => 0.75,
    380   ),
    381   29 =>
    382   array (
    383     0 =>
    384     array (
    385       'r' => 255,
    386       'g' => 255,
    387       'b' => 255,
    388     ),
    389     1 => 0.25,
    390     2 => 0,
    391     3 => 1,
    392   ),
    393   30 =>
    394   array (
    395     0 =>
    396     array (
    397       'r' => 0,
    398       'g' => 0,
    399       'b' => 0,
    400     ),
    401     1 => 0.25,
    402     2 => 0.25,
    403     3 => 0,
    404   ),
    405   31 =>
    406   array (
    407     0 =>
    408     array (
    409       'r' => 63,
    410       'g' => 79,
    411       'b' => 47,
    412     ),
    413     1 => 0.25,
    414     2 => 0.25,
    415     3 => 0.25,
    416   ),
    417   32 =>
    418   array (
    419     0 =>
    420     array (
    421       'r' => 127,
    422       'g' => 159,
    423       'b' => 95,
    424     ),
    425     1 => 0.25,
    426     2 => 0.25,
    427     3 => 0.5,
    428   ),
    429   33 =>
    430   array (
    431     0 =>
    432     array (
    433       'r' => 191,
    434       'g' => 207,
    435       'b' => 175,
    436     ),
    437     1 => 0.25,
    438     2 => 0.25,
    439     3 => 0.75,
    440   ),
    441   34 =>
    442   array (
    443     0 =>
    444     array (
    445       'r' => 255,
    446       'g' => 255,
    447       'b' => 255,
    448     ),
    449     1 => 0.25,
    450     2 => 0.25,
    451     3 => 1,
    452   ),
    453   35 =>
    454   array (
    455     0 =>
    456     array (
    457       'r' => 0,
    458       'g' => 0,
    459       'b' => 0,
    460     ),
    461     1 => 0.25,
    462     2 => 0.5,
    463     3 => 0,
    464   ),
    465   36 =>
    466   array (
    467     0 =>
    468     array (
    469       'r' => 63,
    470       'g' => 95,
    471       'b' => 31,
    472     ),
    473     1 => 0.25,
    474     2 => 0.5,
    475     3 => 0.25,
    476   ),
    477   37 =>
    478   array (
    479     0 =>
    480     array (
    481       'r' => 127,
    482       'g' => 191,
    483       'b' => 63,
    484     ),
    485     1 => 0.25,
    486     2 => 0.5,
    487     3 => 0.5,
    488   ),
    489   38 =>
    490   array (
    491     0 =>
    492     array (
    493       'r' => 191,
    494       'g' => 223,
    495       'b' => 159,
    496     ),
    497     1 => 0.25,
    498     2 => 0.5,
    499     3 => 0.75,
    500   ),
    501   39 =>
    502   array (
    503     0 =>
    504     array (
    505       'r' => 255,
    506       'g' => 255,
    507       'b' => 255,
    508     ),
    509     1 => 0.25,
    510     2 => 0.5,
    511     3 => 1,
    512   ),
    513   40 =>
    514   array (
    515     0 =>
    516     array (
    517       'r' => 0,
    518       'g' => 0,
    519       'b' => 0,
    520     ),
    521     1 => 0.25,
    522     2 => 0.75,
    523     3 => 0,
    524   ),
    525   41 =>
    526   array (
    527     0 =>
    528     array (
    529       'r' => 63,
    530       'g' => 111,
    531       'b' => 15,
    532     ),
    533     1 => 0.25,
    534     2 => 0.75,
    535     3 => 0.25,
    536   ),
    537   42 =>
    538   array (
    539     0 =>
    540     array (
    541       'r' => 127,
    542       'g' => 223,
    543       'b' => 31,
    544     ),
    545     1 => 0.25,
    546     2 => 0.75,
    547     3 => 0.5,
    548   ),
    549   43 =>
    550   array (
    551     0 =>
    552     array (
    553       'r' => 191,
    554       'g' => 239,
    555       'b' => 143,
    556     ),
    557     1 => 0.25,
    558     2 => 0.75,
    559     3 => 0.75,
    560   ),
    561   44 =>
    562   array (
    563     0 =>
    564     array (
    565       'r' => 255,
    566       'g' => 255,
    567       'b' => 255,
    568     ),
    569     1 => 0.25,
    570     2 => 0.75,
    571     3 => 1,
    572   ),
    573   45 =>
    574   array (
    575     0 =>
    576     array (
    577       'r' => 0,
    578       'g' => 0,
    579       'b' => 0,
    580     ),</