function couleur_eclaircir($couleur, $coeff = 0.5) { $couleurs = _couleur_hex_to_dec($couleur); $red = $couleurs["red"] + round((255 - $couleurs["red"]) * $coeff); $green = $couleurs["green"] + round((255 - $couleurs["green"]) * $coeff); $blue = $couleurs["blue"] + round((255 - $couleurs["blue"]) * $coeff); $couleur = _couleur_dec_to_hex($red, $green, $blue); return $couleur; }
function couleur_dec_to_hex($red, $green, $blue) { include_spip('filtres/images_lib'); return _couleur_dec_to_hex($red, $green, $blue); }
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; }
function _image_couleur_extraire($img, $x = 10, $y = 6) { static $couleur_extraite = array(); if (isset($couleur_extraite["{$img}-{$x}-{$y}"])) { return $couleur_extraite["{$img}-{$x}-{$y}"]; } // valeur par defaut si l'image ne peut etre lue $defaut = "F26C4E"; $cache = _image_valeurs_trans($img, "coul-{$x}-{$y}", "txt"); if (!$cache) { return $couleur_extraite["{$img}-{$x}-{$y}"] = $defaut; } $fichier = $cache["fichier"]; $dest = $cache["fichier_dest"]; if (isset($couleur_extraite["{$fichier}-{$x}-{$y}"])) { return $couleur_extraite["{$fichier}-{$x}-{$y}"]; } $creer = $cache["creer"]; if ($creer) { if (@file_exists($fichier)) { $width = $cache["largeur"]; $height = $cache["hauteur"]; $newwidth = 20; $newheight = 20; $thumb = imagecreate($newwidth, $newheight); $source = $cache["fonction_imagecreatefrom"]($fichier); imagepalettetotruecolor($source); imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); do { // get a color $color_index = imagecolorat($thumb, $x, $y); // make it human readable $color_tran = imagecolorsforindex($thumb, $color_index); $x++; $y++; } while ($color_tran['alpha'] == 127 and $x < $newwidth and $y < $newheight); $couleur = _couleur_dec_to_hex($color_tran["red"], $color_tran["green"], $color_tran["blue"]); } else { $couleur = $defaut; } // Mettre en cache le resultat $couleur_extraite["{$fichier}-{$x}-{$y}"] = $couleur; ecrire_fichier($dest, $couleur_extraite["{$fichier}-{$x}-{$y}"]); } else { lire_fichier($dest, $couleur_extraite["{$fichier}-{$x}-{$y}"]); } return $couleur_extraite["{$img}-{$x}-{$y}"] = $couleur_extraite["{$fichier}-{$x}-{$y}"]; }