Changeset 104155 in spip-zone


Ignore:
Timestamp:
May 4, 2017, 11:37:40 AM (2 years ago)
Author:
fil@…
Message:

la luminance relative permet d'avoir un meilleur contraste sur pas mal de couleurs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/filtres_images/filtres/couleurs.php

    r100447 r104155  
    5050}
    5151
     52// Lire la luminance relative d'une couleur
     53// de 0 à 1
     54// cf. https://fr.wikipedia.org/wiki/Luminance#Luminance_relative
     55// cf. https://bl.ocks.org/Fil/cf03a054826ee5b3013577ecc0b009e6
     56// http://code.spip.net/@couleur_luminance_relative
     57function couleur_luminance_relative($couleur) {
     58        $c = _couleur_hex_to_dec($couleur);
     59        return (0.2126 * $c['red'] + 0.7152 * $c['green'] + 0.0722 * $c['blue']) / 255;
     60}
    5261
    5362// http://code.spip.net/@couleur_extreme
     
    5867        // -> la limite est une valeur de 0 a 255, permettant de regler le point limite entre le passage noir ou blanc
    5968
    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) {
     69        if (couleur_luminance_relative($couleur) > $limite) {
    7770                $couleur_texte = "ffffff";
    7871        } else {
     
    10093        // utile pour ecrire sur fond blanc,
    10194        // 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) {
     95        if (couleur_luminance_relative($couleur) > $seuil / 255) {
    11096                include_spip("inc/filtres_images_mini");
    111 
    11297                return couleur_foncer($couleur);
    11398        } else {
     
    118103// http://code.spip.net/@couleur_eclaircir_si_foncee
    119104function 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) {
     105        if (couleur_luminance_relative($couleur) < $seuil / 255) {
    128106                include_spip("inc/filtres_images_mini");
    129 
    130107                return couleur_eclaircir($couleur);
    131108        } else {
Note: See TracChangeset for help on using the changeset viewer.