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

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

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

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