Newer
Older
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *

erational@erational.org
a validé
* Copyright (c) 2001-2015 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/

kent1@arscenic.info
a validé
if (!defined('_ECRIRE_INC_VERSION')) return;
include_spip('inc/filtres_images_lib_mini');
/**
* Toutes les fonctions couleur_xx de ce fichier :
* - prennent une couleur hexa sur 6 caracteres en entree (les couleurs web nommees sont admises aussi)
* - fournissent une couleur hexa en sortie
* - sont chainables les unes derrieres les autres dans toutes les combinaisons possibles
*/

spip.franck@lien-d-amis.net
a validé
// http://code.spip.net/@couleur_extraire

gilles.vincent@gmail.com
a validé
function couleur_extraire ($img, $x = 10, $y = 6) {
include_spip('filtres/images_lib');
return _image_couleur_extraire($img, $x, $y);
}

spip.franck@lien-d-amis.net
a validé
// http://code.spip.net/@couleur_web
function couleur_web($couleur) {
include_spip('filtres/images_lib');
$rvb = _couleur_hex_to_dec($couleur);
$rvb = array_map('multiple_de_trois',$rvb);
return _couleur_dec_to_hex($rvb['red'],$rvb['green'],$rvb['blue']);
}

spip.franck@lien-d-amis.net
a validé
// http://code.spip.net/@couleur_4096
function couleur_4096($couleur) {
$r = (substr($couleur, 0, 1));
$v = (substr($couleur, 2, 1));
$b = (substr($couleur, 4, 1));
return "$r$r$v$v$b$b";
}

spip.franck@lien-d-amis.net
a validé
// http://code.spip.net/@couleur_extreme

gilles.vincent@gmail.com
a validé
function couleur_extreme ($couleur, $limite = 0.5) {
// force la couleur au noir ou au blanc le plus proche
// -> 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;
}

spip.franck@lien-d-amis.net
a validé
// http://code.spip.net/@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;
}

spip.franck@lien-d-amis.net
a validé
// http://code.spip.net/@couleur_foncer_si_claire

gilles.vincent@gmail.com
a validé
function couleur_foncer_si_claire ($couleur, $seuil = 122) {
// 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 > $seuil) {
include_spip("inc/filtres_images_mini");
return couleur_foncer($couleur);
}
else return $couleur;
}

spip.franck@lien-d-amis.net
a validé
// http://code.spip.net/@couleur_eclaircir_si_foncee

gilles.vincent@gmail.com
a validé
function couleur_eclaircir_si_foncee ($couleur, $seuil = 123) {
$couleurs = _couleur_hex_to_dec($couleur);
$red = $couleurs["red"];
$green = $couleurs["green"];
$blue = $couleurs["blue"];
$moyenne = round(($red+$green+$blue)/3);
if ($moyenne < $seuil) {
include_spip("inc/filtres_images_mini");
return couleur_eclaircir($couleur);
}
else return $couleur;
}

spip.franck@lien-d-amis.net
a validé
// http://code.spip.net/@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;
}

spip.franck@lien-d-amis.net
a validé
// http://code.spip.net/@couleur_luminance

arno@rezo.net
a validé
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"];

arno@rezo.net
a validé
// 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);

arno@rezo.net
a validé
$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;
}