Dernier article
hexa2rgb() pour manipuler les couleurs
Ayant de besoin de spécifier de manière simple une couleur en entrée d'une fonction qui nécessite d'avoir les 3 composantes (rouge, vert, bleu) séparées, j'ai cherché une telle fonction sur le net et j'ai fini par créer la mienne, mélange de tout ce que j'ai pu trouver.
Pour un script de création de vignettes, j'ai besoin de passer une couleur de fond à GD, cette couleur de fond servant de remplissage par défaut si l'image d'origine n'a pas le même ratio que la vignette finale. GD, au niveau de sa fonction imagecolorallocate() par ex, attend la couleur sur 3 paramètres, que sont le rouge, vert et bleu.
Mais dans ma logique de toujours faire au plus simple pour les utilisateurs finaux (ici des développeurs utilisant mon script mais pas forcément des développeurs chevronnés), le plus logique m'a paru de demander une couleur au format hexa, format le plus utilisé sur le web que ce soit pour le HTML, les CSS ou autre ; le bon vieux #000000
pour le noir par ex. Ce code donnant d'ailleurs, en RGB, les valeurs suivantes : R = 0, G = 0, B = 0.
La fonction est d'ailleurs toute simple d'utilisation mais j'ai repris/amélioré deux points par rapport à ce que j'ai pu trouver (la fonction ci-après existe peut-être déjà mais je ne suis pas tombé dessus) :
- Les valeurs d'entrée peuvent être indifféremment
#000000
,#000
,000000
ou000
, l'équivalence se fait automatiquement avant de faire le processus de conversion - Les valeurs de sorties peuvent être de deux types : un "bête" tableau contenant respectivement le rouge, le vert et le bleu ou alors un tableau associatif avec "red", "green" et "blue" pour les clés de ce tableau
Mais mieux qu'un long discours, voici la fonction qui comme toujours est très certainement améliorable :
function hexa2rgb ( $hexa, $indexed = FALSE ) { $hexa = trim($hexa, '#'); if ( strlen($hexa) == 3 ) { $hexa = str_repeat($hexa{0}, 2). str_repeat($hexa{1}, 2). str_repeat($hexa{2}, 2); } // endif $int = hexdec($hexa); $result = array( 'red' => 0xFF & ( $int >> 0x10 ), 'green' => 0xFF & ( $int >> 0x8 ), 'blue' => 0xFF & $int ); return $indexed ? $result : array_values($result); } // end of 'hexa2rgb()'
L'utilisation est toute simple, voici quelques exemples :
list($r, $g, $b) = hexa2rgb('#cc0000');
$color = hexa2rgb('#cc0000'); echo $color['red'];
Comme d'habitude, n'hésitez pas à faire vos remarques sur cette fonction, vos corrections ou améliorations seront toujours les bienvenues :-)
Articles précédents
-
Fonction mail() : envoyer un sujet avec des accents
Dans le cadre d'une application web, on peut être amené à envoyer des mails de notification simples et dans ce cas l'utilisation de la fonction
mail()
de PHP peut tout à fait suffir. Mais que faire dans le cas où le sujet doit comporter des accents sachant que la fonction utilise - si je ne me trompe pas - un charset anglon-saxon par défault -
Extraire des fichiers d'un installeur .msi
J'ai eu récemment le besoin d'extraire des fichiers d'une archive .msi (Microsoft Installer) sans installer le logiciel correspondant (il ne me fallait qu'un fichier en particulier). Après avoir fait quelques recherches, voici ce qu'il en résulte.
-
Où trouver d'anciennes versions des logiciels web ?
Dans le développement web, il nous arrive d'être confronté à un "vieux" serveur, un serveur sur lequelle se trouve de vieilles versions de Apache, MySQL ou PHP qui ne se comportent pas forcément comme les suivantes (je pense surtout à PHP...). Voici une série de liens qui pourra vous être utile si vous êtes confrontés à ce cas.
-
2008, année charnière
Loin des (bonnes) résolutions que l'on formulent chaque année et que l'on fait connaître à tout va mais qui ne sont guère tenues, je vais vous parler de mes projets pour cette nouvelle année ou plutôt de mon projet : passer du statut de salarié au statut de travailleur indépendant.