NounouRs Non parce que c pas mon pied ! | C'est un peu a cote de la plaque, mais j'ai des fonctions de manipulation des couleurs HTML :
Ca permet de manipuler en RVB sans s'emmerder... si vous avez des remarques à faire...
Code :
- function html2rgb(color) {
- // gestion du #...
- if (color.substr(0,1)=="#" ) { color=color.substr(1,6); }
- var tabRGB = new Array(3);
- tabRGB[0] = hex2dec(color.substr(0, 2));
- tabRGB[1] = hex2dec(color.substr(2, 2));
- tabRGB[2] = hex2dec(color.substr(4, 2));
- return tabRGB;
- }
- // string rgb2html(Array tablo)
- // La réciproque exacte de la fonction html2rgb, avec comme paramètre un Array.
- function rgb2html(tablo) {
- // Vérification des bornes...
- for(var i=0;i<3;i++) {
- tablo[i]=bornes(tablo[i],0,255);
- }
- // Le str_pad permet de remplir avec des 0 les valeurs inferieures à 0F
- // parce que sinon rgb2html(Array(0,255,255)) retournerai #0ffff<=manque un 0 !
- return "#" + String(str_pad(dec2hex(tablo[0]),2,"0",0)) + String(str_pad(dec2hex(tablo[1]),2,"0",0)) + String(str_pad(dec2hex(tablo[2]),2,"0",0));
- }
- function str_pad(chaine, taille, elem, sens) { // 0 = left , 1 = right, 2 = center
- var orientation = 0;
- while(chaine.length < taille) {
- if( (sens == 0 || sens == 2) && orientation == 0) {
- chaine = elem + chaine;
- }
- if( (sens == 1 || sens == 2) && orientation == 1) {
- chaine = chaine + elem;
- }
- orientation = 1 - orientation;
- }
- return chaine.substr(0,taille);
- }
- // borner les nombres entre 0 et 255.
- function bornes(nb,min,max) {
- if (nb<min) { nb=min; }
- if (nb>max) { nb=max; }
- return nb;
- }
- // base 10 vers base 16 (int vers chaine)
- function dec2hex(dec) {
- var hexa="0123456789ABCDEF";
- var hex="";
- while (dec>15) {
- tmp=dec-(Math.floor(dec/16))*16;
- hex=hexa.charAt(tmp)+hex;
- dec=Math.floor(dec/16);
- }
- hex=hexa.charAt(dec)+hex;
- return(hex);
- }
- // base 16 vers base 10 (chaine vers int)
- function hex2dec(hex) {
- return parseInt(hex,16);
- }
- // -------------------------------------------------------------------
- // donne la teinte de gris correspondant à la couleur
- function niveauGris(tabcoul) {
- return bornes( parseInt(0.299 * (tabcoul[0]) + 0.587 * (tabcoul[1]) + 0.114 * (tabcoul[2]), 10));
- }
- function seuil(tabcoul) {
- var seuil = 145;
- if (niveauGris(tabcoul) < seuil) {return 0;} else {return 255;}
- }
- // -------------------------------------------------------------------
- function grisRGB(tabcoul) {
- var nuance = niveauGris(tabcoul);
- var tabRGB = new Array(3);
- for (var i=0; i<3; i++) {
- tabRGB[i] = nuance;
- }
- return tabRGB;
- }
- // La fonction de seuil donne noir
- function seuilRGB(tabcoul) {
- var NouB = seuil(tabcoul);
- var tabRGB = new Array(3);
- for (var i=0; i<3; i++) {
- tabRGB[i] = NouB;
- }
- return tabRGB;
- }
- function inverseRGB(tabcoul) {
- var tabRGB = new Array(3);
- for (var i=0; i<3; i++) {
- tabRGB[i] = bornes(255-tabcoul[i]);
- }
- return tabRGB;
- }
|
Message édité par NounouRs le 29-02-2008 à 17:05:34
|