Advertisement
rAthus

Éclaircir une couleur depuis sa valeur hexadécimale

Apr 20th, 2015
453
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function hexToRgb(hex)
  2. {
  3.     var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
  4.     return result?
  5.     {
  6.         r: parseInt(result[1],16),
  7.         g: parseInt(result[2],16),
  8.         b: parseInt(result[3],16)
  9.     }:false;
  10. }
  11.  
  12. function rgbToHex(r,g,b)
  13. {
  14.     return '#'+((1<<24)+(r<<16)+(g<<8)+b).toString(16).slice(1);
  15. }
  16.  
  17. /*
  18.     Variables de la fonction brightColor() par rAthus :
  19.     - color_hex (string, obligatoire) couleur au format hexadécimal (exemple : '#0D3775')
  20.     - supervif (booléen, facultatif) force une couleur très vive si true, sinon augmente jusqu'à un minimum de 50% de luminosité
  21. */
  22. function brightColor(color_hex,supervif)
  23. {
  24.     if (typeof(supervif)=='undefined')
  25.         supervif = false;
  26.    
  27.     var color_hex_nohash = color_hex.replace('#','');
  28.     if (color_hex_nohash.length==3)
  29.         color_hex = '#'+color_hex_nohash+color_hex_nohash;
  30.    
  31.     var color_rgb = hexToRgb(color_hex);
  32.    
  33.     if (!color_rgb || ((color_rgb.r+color_rgb.g+color_rgb.b)/3>=255/2) || (supervif && (color_rgb.r==255 || color_rgb.g==255 || color_rgb.b==255)))
  34.         return color_hex;
  35.    
  36.     color_rgb.r = color_rgb.r_old = color_rgb.r||1;
  37.     color_rgb.g = color_rgb.g_old = color_rgb.g||1;
  38.     color_rgb.b = color_rgb.b_old = color_rgb.b||1;
  39.    
  40.     while (((color_rgb.r+color_rgb.g+color_rgb.b)/3<255/2) || (supervif && (color_rgb.r<255 && color_rgb.g<255 && color_rgb.b<255)))
  41.     {
  42.         color_rgb.r = color_rgb.r*1.1;
  43.         color_rgb.g = color_rgb.g*1.1;
  44.         color_rgb.b = color_rgb.b*1.1;
  45.         if (color_rgb.r>255)
  46.             color_rgb.r=255;
  47.         if (color_rgb.g>255)
  48.             color_rgb.g=255;
  49.         if (color_rgb.b>255)
  50.             color_rgb.b=255;
  51.     }
  52.    
  53.     color_rgb.r = Math.round(color_rgb.r);
  54.     color_rgb.g = Math.round(color_rgb.g);
  55.     color_rgb.b = Math.round(color_rgb.b);
  56.    
  57.     return rgbToHex(color_rgb.r, color_rgb.g, color_rgb.b);
  58. }
  59.  
  60. // exemple d'éclaircicement d'un bleu foncé :
  61. console.log(brightColor('#263D61'));
  62. console.log(brightColor('#263D61',true));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement