Furaxx | Salut,
C'est ce que j'avais fait à la base mais ça ne marche pas avec certaines couleurs comme du orange un peu pétant par exemple.
Le fait d'ajouter "222222" à la couleur fait qu'il y a systématiquement dépassement, et je me retrouve avec du "FFFFFF" au final, et le blanc je n'en veux pas.
Pour info, une petite fonction PHP qui fait bien le boulot du RVB vers HSL, qui nous permet ensuite d'éclaircir plus facilement:
Code :
- <?
- function rgbToHsl( $r, $g, $b ) {
- $oldR = $r;
- $oldG = $g;
- $oldB = $b;
- $r /= 255;
- $g /= 255;
- $b /= 255;
- $max = max( $r, $g, $b );
- $min = min( $r, $g, $b );
- $h;
- $s;
- $l = ( $max + $min ) / 2;
- $d = $max - $min;
- if( $d == 0 ){
- $h = $s = 0; // achromatic
- } else {
- $s = $d / ( 1 - abs( 2 * $l - 1 ) );
- switch( $max ){
- case $r:
- $h = 60 * fmod( ( ( $g - $b ) / $d ), 6 );
- if ($b > $g) {
- $h += 360;
- }
- break;
- case $g:
- $h = 60 * ( ( $b - $r ) / $d + 2 );
- break;
- case $b:
- $h = 60 * ( ( $r - $g ) / $d + 4 );
- break;
- }
- }
- return array( round( $h, 2 ), round( $s, 2 ), round( $l, 2 ) );
- }
|
Et les formules qui vont bien:
http://www.rapidtables.com/convert [...] to-hsl.htm |