Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3029 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  PHP - Eclaircir une couleur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PHP - Eclaircir une couleur

n°2306173
Furaxx
Posté le 29-09-2017 à 11:38:33  profilanswer
 

Bonjour,
 
J'ai une valeur de couleur en hexa et je voudrais à partir de celle-ci, en obtenir une valeur plus claire.
J'ai essayé en convertissant en décimal, en faisant une addition, puis en revenant en hexa mais le souci c'est que mon addition dépasse parfois FFFFFF, et donc ça n'est pas bon.
Mettre un "if(ma_valeur > FFFFFF) -> ma_valeur=FFFFFF" ne me va pas non plus car je ne veut pas de blanc.
 
Exemple avec cette couleur orange: f57c00 pour laquelle une addition de 222222 n'est pas bonne, alors qu'on voit bien qu'on peut facilement avoir plus clair dans un logiciel de dessin.
 
Bref, si vous avez la solution... Merci! :)

mood
Publicité
Posté le 29-09-2017 à 11:38:33  profilanswer
 

n°2306174
flo850
moi je
Posté le 29-09-2017 à 11:47:31  profilanswer
 

Passe ta couleur en mode HSL , et joue sur la luminance ( le L )


---------------

n°2306179
Furaxx
Posté le 29-09-2017 à 14:37:32  profilanswer
 

Tiens, j'avais même pas pensé à ça.
... Ne reste plus qu'à trouver un bout de script qui fait ça, les 2 que j'ai testé pour le moment me renvoient des valeurs... fantaisistes dirons-nous... ;)

n°2306181
rat de com​bat
attention rongeur méchant!
Posté le 29-09-2017 à 16:04:13  profilanswer
 

Tu découpes en R,V,B, tu fais trois additions séparées avec test dépassement et tu recolles les bouts?  
 
Attention le code c'est du Perl, je ne maîtrise pas le PHP, mais ça doit être plus ou moins proche:

Code :
  1. #sans garantie et toussa...
  2. use strict;
  3. use warnings FATAL=>'all';
  4.  
  5. my $color="f57c00";
  6.  
  7. my $increment=0x22;
  8.  
  9. my @rgb=unpack("(A[2])*", $color);
  10.  
  11. foreach (@rgb) #attention $_ est une espèce de pointeur, en modifiant $_ on modifie donc bien le contenu du tableau
  12. {
  13.     $_=hex($_)+$increment;
  14.     $_=0xFF if($_>0xFF);
  15. }
  16.  
  17. my $color_new=join('', map({sprintf("%02x", $_)} @rgb));
  18.  
  19. print "$color -> $color_new\n";

n°2306270
Furaxx
Posté le 02-10-2017 à 10:50:50  profilanswer
 

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 :
  1. <?
  2. function rgbToHsl( $r, $g, $b ) {
  3. $oldR = $r;
  4. $oldG = $g;
  5. $oldB = $b;
  6. $r /= 255;
  7. $g /= 255;
  8. $b /= 255;
  9.     $max = max( $r, $g, $b );
  10. $min = min( $r, $g, $b );
  11. $h;
  12. $s;
  13. $l = ( $max + $min ) / 2;
  14. $d = $max - $min;
  15.      if( $d == 0 ){
  16.          $h = $s = 0; // achromatic
  17.      } else {
  18.          $s = $d / ( 1 - abs( 2 * $l - 1 ) );
  19.  switch( $max ){
  20.             case $r:
  21.              $h = 60 * fmod( ( ( $g - $b ) / $d ), 6 );
  22.                         if ($b > $g) {
  23.                     $h += 360;
  24.                 }
  25.                 break;
  26.             case $g:
  27.              $h = 60 * ( ( $b - $r ) / $d + 2 );
  28.              break;
  29.             case $b:
  30.              $h = 60 * ( ( $r - $g ) / $d + 4 );
  31.              break;
  32.         }                   
  33. }
  34.       return array( round( $h, 2 ), round( $s, 2 ), round( $l, 2 ) );
  35.     }


 
Et les formules qui vont bien:
http://www.rapidtables.com/convert [...] to-hsl.htm


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  PHP - Eclaircir une couleur

 

Sujets relatifs
PSCS et PHPPb extension PHP [linux]
Php et SQL ServerProgrammation PHP basique
[RESOLU] PHP $_POST vide après envoi de formulaire[résolu]problème comparaison Php/MySql
Questions multiples HTML/PHP/SQLseuillage de couleur d'image par matlab
[PHP] droits du user du script ?[HTML/PHP/JS] Afficher x pages en alternances sur timer
Plus de sujets relatifs à : PHP - Eclaircir une couleur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR