[SPIP] +2.1.12
[velocampus/web/www.git] / www / ecrire / inc / filtres_images_mini.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2011 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 if (!defined('_ECRIRE_INC_VERSION')) return;
14 include_spip('inc/filtres_images_lib_mini'); // par precaution
15
16 // http://doc.spip.org/@couleur_html_to_hex
17 function couleur_html_to_hex($couleur){
18 $couleurs_html=array(
19 'aqua'=>'00FFFF','black'=>'000000','blue'=>'0000FF','fuchsia'=>'FF00FF','gray'=>'808080','green'=>'008000','lime'=>'00FF00','maroon'=>'800000',
20 'navy'=>'000080','olive'=>'808000','purple'=>'800080','red'=>'FF0000','silver'=>'C0C0C0','teal'=>'008080','white'=>'FFFFFF','yellow'=>'FFFF00');
21 if (isset($couleurs_html[$lc=strtolower($couleur)]))
22 return $couleurs_html[$lc];
23 return $couleur;
24 }
25
26 // http://doc.spip.org/@couleur_foncer
27 function couleur_foncer ($couleur) {
28
29 $couleurs = _couleur_hex_to_dec($couleur);
30
31 $red = $couleurs["red"] - round(($couleurs["red"])/2);
32 $green = $couleurs["green"] - round(($couleurs["green"])/2);
33 $blue = $couleurs["blue"] - round(($couleurs["blue"])/2);
34
35 $couleur = _couleur_dec_to_hex($red, $green, $blue);
36
37 return $couleur;
38 }
39
40 // http://doc.spip.org/@couleur_eclaircir
41 function couleur_eclaircir ($couleur) {
42 $couleurs = _couleur_hex_to_dec($couleur);
43
44 $red = $couleurs["red"] + round((255 - $couleurs["red"])/2);
45 $green = $couleurs["green"] + round((255 - $couleurs["green"])/2);
46 $blue = $couleurs["blue"] + round((255 - $couleurs["blue"])/2);
47
48 $couleur = _couleur_dec_to_hex($red, $green, $blue);
49
50 return $couleur;
51
52 }
53
54 // selectionner les images qui vont subir une transformation sur un critere de taille
55 // ls images exclues sont marquees d'une class no_image_filtrer qui bloque les filtres suivants
56 // dans la fonction image_filtrer
57 // http://doc.spip.org/@image_select
58 function image_select($img,$width_min=0, $height_min=0, $width_max=10000, $height_max=1000){
59 if (!$img) return $img;
60 list ($h,$l) = taille_image($img);
61 $select = true;
62 if ($l<$width_min OR $l>$width_max OR $h<$height_min OR $h>$height_max)
63 $select = false;
64
65 $class = extraire_attribut($img,'class');
66 $p = strpos($class,'no_image_filtrer');
67 if (($select==false) AND ($p===FALSE)){
68 $class .= " no_image_filtrer";
69 $img = inserer_attribut($img,'class',$class);
70 }
71 if (($select==true) AND ($p!==FALSE)){
72 $class = preg_replace(",\s*no_image_filtrer,","",$class);
73 $img = inserer_attribut($img,'class',$class);
74 }
75 return $img;
76 }
77
78
79 // http://doc.spip.org/@image_passe_partout
80 function image_passe_partout($img,$taille_x = -1, $taille_y = -1,$force = false,$cherche_image=false,$process='AUTO'){
81 if (!$img) return '';
82 list ($hauteur,$largeur) = taille_image($img);
83 if ($taille_x == -1)
84 $taille_x = isset($GLOBALS['meta']['taille_preview'])?$GLOBALS['meta']['taille_preview']:150;
85 if ($taille_y == -1)
86 $taille_y = $taille_x;
87
88 if ($taille_x == 0 AND $taille_y > 0)
89 $taille_x = 1; # {0,300} -> c'est 300 qui compte
90 elseif ($taille_x > 0 AND $taille_y == 0)
91 $taille_y = 1; # {300,0} -> c'est 300 qui compte
92 elseif ($taille_x == 0 AND $taille_y == 0)
93 return '';
94
95 list($destWidth,$destHeight,$ratio) = ratio_passe_partout($largeur,$hauteur,$taille_x,$taille_y);
96 $fonction = array('image_passe_partout', func_get_args());
97 return process_image_reduire($fonction,$img,$destWidth,$destHeight,$force,$cherche_image,$process);
98 }
99
100 // http://doc.spip.org/@image_reduire
101 function image_reduire($img, $taille = -1, $taille_y = -1, $force=false, $cherche_image=false, $process='AUTO') {
102 // Determiner la taille x,y maxi
103 // prendre le reglage de previsu par defaut
104 if ($taille == -1)
105 $taille = isset($GLOBALS['meta']['taille_preview'])?$GLOBALS['meta']['taille_preview']:150;
106 if ($taille_y == -1)
107 $taille_y = $taille;
108
109 if ($taille == 0 AND $taille_y > 0)
110 $taille = 100000; # {0,300} -> c'est 300 qui compte
111 elseif ($taille > 0 AND $taille_y == 0)
112 $taille_y = 100000; # {300,0} -> c'est 300 qui compte
113 elseif ($taille == 0 AND $taille_y == 0)
114 return '';
115
116 $fonction = array('image_reduire', func_get_args());
117 return process_image_reduire($fonction,$img,$taille,$taille_y,$force,$cherche_image,$process);
118 }
119
120 // Reduire une image d'un certain facteur
121 // http://doc.spip.org/@image_reduire_par
122 function image_reduire_par ($img, $val=1, $force=false) {
123 list ($hauteur,$largeur) = taille_image($img);
124
125 $l = round($largeur/$val);
126 $h = round($hauteur/$val);
127
128 if ($l > $h) $h = 0;
129 else $l = 0;
130
131 $img = image_reduire($img, $l, $h, $force);
132
133 return $img;
134 }
135
136 ?>