source: spip-zone/_core_/plugins/filtres_images/filtres/couleurs.php @ 43404

Last change on this file since 43404 was 43404, checked in by cedric@…, 10 years ago

Les extensions avaient deja rate le passage en 2010, ne ratons pas celui a 2011

File size: 4.9 KB
Line 
1<?php
2/***************************************************************************\
3 *  SPIP, Systeme de publication pour l'internet                           *
4 *                                                                         *
5 *  Copyright (c) 2001-2011                                                *
6 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
7 *                                                                         *
8 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
9 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
10\***************************************************************************/
11
12include_spip('inc/filtres_images_lib_mini');
13
14/**
15 * Toutes les fonctions couleur_xx de ce fichier :
16 *      - prennent une couleur hexa sur 6 caracteres en entree (les couleurs web nommees sont admises aussi)
17 *  - fournissent une couleur hexa en sortie
18 *  - sont chainables les unes derrieres les autres dans toutes les combinaisons possibles
19 */
20
21// http://doc.spip.org/@couleur_extraire
22function couleur_extraire ($img, $x=10, $y=6) {
23        include_spip('filtres/images_lib');
24        return _image_couleur_extraire($img, $x, $y);
25}
26
27
28
29// http://doc.spip.org/@couleur_web
30function couleur_web($couleur) {
31        include_spip('filtres/images_lib');
32        $rvb = _couleur_hex_to_dec($couleur);
33       
34        $rvb = array_map('multiple_de_trois',$rvb);
35       
36        return _couleur_dec_to_hex($rvb['red'],$rvb['green'],$rvb['blue']);
37}
38
39// http://doc.spip.org/@couleur_4096
40function couleur_4096($couleur) {
41        $r = (substr($couleur, 0, 1));
42        $v = (substr($couleur, 2, 1));
43        $b = (substr($couleur, 4, 1));
44       
45        return "$r$r$v$v$b$b";
46}
47
48
49// http://doc.spip.org/@couleur_extreme
50function couleur_extreme ($couleur, $limite=0.5) {
51        // force la couleur au noir ou au blanc le plus proche
52        // -> donc couleur foncee devient noire
53        //    et couleur claire devient blanche
54        // -> la limite est une valeur de 0 a 255, permettant de regler le point limite entre le passage noir ou blanc
55
56        $couleurs = _couleur_hex_to_dec($couleur);
57        $red = $couleurs["red"];
58        $green = $couleurs["green"];
59        $blue = $couleurs["blue"];
60       
61       
62        /*     
63        $moyenne = round(($red+$green+$blue)/3);
64
65        if ($moyenne > $limite) $couleur_texte = "ffffff";
66        else $couleur_texte = "000000";
67        */
68
69        include_spip('filtres/images_lib');
70        $hsl = _couleur_rgb2hsl ($red, $green, $blue);
71
72        if ($hsl["l"] > $limite) $couleur_texte = "ffffff";
73        else $couleur_texte = "000000";
74
75        return $couleur_texte;
76}
77
78// http://doc.spip.org/@couleur_inverser
79function couleur_inverser ($couleur) {
80        $couleurs = _couleur_hex_to_dec($couleur);
81        $red = 255 - $couleurs["red"];
82        $green = 255 - $couleurs["green"];
83        $blue = 255 - $couleurs["blue"];
84
85        $couleur = _couleur_dec_to_hex($red, $green, $blue);
86       
87        return $couleur;
88}
89
90// http://doc.spip.org/@couleur_foncer_si_claire
91function couleur_foncer_si_claire ($couleur, $seuil=122) {
92        // ne foncer que les couleurs claires
93        // utile pour ecrire sur fond blanc,
94        // mais sans changer quand la couleur est deja foncee
95        $couleurs = _couleur_hex_to_dec($couleur);
96        $red = $couleurs["red"];
97        $green = $couleurs["green"];
98        $blue = $couleurs["blue"];
99       
100        $moyenne = round(($red+$green+$blue)/3);
101       
102        if ($moyenne > $seuil) {
103                include_spip("inc/filtres_images_mini");
104                return couleur_foncer($couleur);
105        }
106        else return $couleur;
107}
108
109// http://doc.spip.org/@couleur_eclaircir_si_foncee
110function couleur_eclaircir_si_foncee ($couleur, $seuil=123) {
111        $couleurs = _couleur_hex_to_dec($couleur);
112        $red = $couleurs["red"];
113        $green = $couleurs["green"];
114        $blue = $couleurs["blue"];
115       
116        $moyenne = round(($red+$green+$blue)/3);
117       
118        if ($moyenne < $seuil) {
119                include_spip("inc/filtres_images_mini");
120                return couleur_eclaircir($couleur);
121        }
122        else return $couleur;
123}
124
125// http://doc.spip.org/@couleur_saturation
126function couleur_saturation($couleur, $val) {
127        if ($couleur == "ffffff") $couleur = "eeeeee";
128
129        $couleurs = _couleur_hex_to_dec($couleur);
130        $r= 255 - $couleurs["red"];
131        $g= 255 - $couleurs["green"];
132        $b= 255 - $couleurs["blue"];
133
134        $max = max($r,$g,$b);
135
136        $r = 255 - $r / $max * 255 * $val;
137        $g = 255 - $g / $max * 255 * $val;
138        $b = 255 - $b / $max * 255 * $val;
139       
140        $couleur = _couleur_dec_to_hex($r, $g, $b);
141       
142        return $couleur;
143               
144}
145
146// http://doc.spip.org/@couleur_luminance
147function couleur_luminance($couleur, $val) {
148        include_spip('filtres/images_lib');
149
150        $couleurs = _couleur_hex_to_dec($couleur);
151        $r= $couleurs["red"];
152        $g= $couleurs["green"];
153        $b= $couleurs["blue"];
154
155        // Cas etonnant: quand gris parfait, la correction de HSL ne fonctionne pas
156        // en revanche, couleur_saturation retourne exactement la bonne valeur
157        if ($r == $g && $g == $b) return couleur_saturation($couleur, $val);
158
159       
160        $couleur = _couleur_rgb2hsl($r, $g, $b);
161        $h = $couleur["h"];
162        $s = $couleur["s"];
163        $l = $couleur["l"];
164       
165        $rgb = _couleur_hsl2rgb ($h, $s, 1-$val);
166        $r = $rgb["r"];
167        $g = $rgb["g"];
168        $b = $rgb["b"];
169       
170        $retour = _couleur_dec_to_hex($r, $g, $b);
171       
172        return $retour;
173}
174
175?>
Note: See TracBrowser for help on using the repository browser.