source: spip-zone/_core_/branches/spip-3.0/plugins/filtres_images/filtres/couleurs.php @ 94397

Last change on this file since 94397 was 94397, checked in by denisb@…, 4 years ago

bonne année.

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