X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fextensions%2Ffiltres_images%2Ffiltres%2Fcouleurs.php;fp=www%2Fextensions%2Ffiltres_images%2Ffiltres%2Fcouleurs.php;h=f98e55313d01f0f909d8d861c82d768f5b42e321;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c diff --git a/www/extensions/filtres_images/filtres/couleurs.php b/www/extensions/filtres_images/filtres/couleurs.php new file mode 100644 index 0000000..f98e553 --- /dev/null +++ b/www/extensions/filtres_images/filtres/couleurs.php @@ -0,0 +1,177 @@ + donc couleur foncee devient noire + // et couleur claire devient blanche + // -> la limite est une valeur de 0 a 255, permettant de regler le point limite entre le passage noir ou blanc + + $couleurs = _couleur_hex_to_dec($couleur); + $red = $couleurs["red"]; + $green = $couleurs["green"]; + $blue = $couleurs["blue"]; + + + /* + $moyenne = round(($red+$green+$blue)/3); + + if ($moyenne > $limite) $couleur_texte = "ffffff"; + else $couleur_texte = "000000"; + */ + + include_spip('filtres/images_lib'); + $hsl = _couleur_rgb2hsl ($red, $green, $blue); + + if ($hsl["l"] > $limite) $couleur_texte = "ffffff"; + else $couleur_texte = "000000"; + + return $couleur_texte; +} + +// http://doc.spip.org/@couleur_inverser +function couleur_inverser ($couleur) { + $couleurs = _couleur_hex_to_dec($couleur); + $red = 255 - $couleurs["red"]; + $green = 255 - $couleurs["green"]; + $blue = 255 - $couleurs["blue"]; + + $couleur = _couleur_dec_to_hex($red, $green, $blue); + + return $couleur; +} + +// http://doc.spip.org/@couleur_foncer_si_claire +function couleur_foncer_si_claire ($couleur) { + // ne foncer que les couleurs claires + // utile pour ecrire sur fond blanc, + // mais sans changer quand la couleur est deja foncee + $couleurs = _couleur_hex_to_dec($couleur); + $red = $couleurs["red"]; + $green = $couleurs["green"]; + $blue = $couleurs["blue"]; + + $moyenne = round(($red+$green+$blue)/3); + + if ($moyenne > 122) { + include_spip("inc/filtres_images_mini"); + return couleur_foncer($couleur); + } + else return $couleur; +} + +// http://doc.spip.org/@couleur_eclaircir_si_foncee +function couleur_eclaircir_si_foncee ($couleur) { + $couleurs = _couleur_hex_to_dec($couleur); + $red = $couleurs["red"]; + $green = $couleurs["green"]; + $blue = $couleurs["blue"]; + + $moyenne = round(($red+$green+$blue)/3); + + if ($moyenne < 123) { + include_spip("inc/filtres_images_mini"); + return couleur_eclaircir($couleur); + } + else return $couleur; +} + +// http://doc.spip.org/@couleur_saturation +function couleur_saturation($couleur, $val) { + if ($couleur == "ffffff") $couleur = "eeeeee"; + + $couleurs = _couleur_hex_to_dec($couleur); + $r= 255 - $couleurs["red"]; + $g= 255 - $couleurs["green"]; + $b= 255 - $couleurs["blue"]; + + $max = max($r,$g,$b); + + $r = 255 - $r / $max * 255 * $val; + $g = 255 - $g / $max * 255 * $val; + $b = 255 - $b / $max * 255 * $val; + + $couleur = _couleur_dec_to_hex($r, $g, $b); + + return $couleur; + +} + +// http://doc.spip.org/@couleur_luminance +function couleur_luminance($couleur, $val) { + include_spip('filtres/images_lib'); + + $couleurs = _couleur_hex_to_dec($couleur); + $r= $couleurs["red"]; + $g= $couleurs["green"]; + $b= $couleurs["blue"]; + + // Cas etonnant: quand gris parfait, la correction de HSL ne fonctionne pas + // en revanche, couleur_saturation retourne exactement la bonne valeur + if ($r == $g && $g == $b) return couleur_saturation($couleur, $val); + + + $couleur = _couleur_rgb2hsl($r, $g, $b); + $h = $couleur["h"]; + $s = $couleur["s"]; + $l = $couleur["l"]; + + $rgb = _couleur_hsl2rgb ($h, $s, 1-$val); + $r = $rgb["r"]; + $g = $rgb["g"]; + $b = $rgb["b"]; + + $retour = _couleur_dec_to_hex($r, $g, $b); + + return $retour; +} + +?> \ No newline at end of file