Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONVERSION RGB <-> TSL


Information sur la source

Catégorie :Graphique Classé sous : RGB, TSL, RVB, HSL, conversion Niveau : Débutant Date de création : 13/06/2008 Date de mise à jour : 13/06/2008 23:04:58 Vu : 1 492

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

Description

J'ai cherché sur tous les sites comment passer du mode RGB à TSL et ci-ce-versa sans résultat.
Puis finalement, je suis tombé sur http://www.easyrgb.com/index.php?X=MATH&H=19#text19
Les scripts ne sont pas en PHP, alors je les ai traduits!
 

Source

  • <?php
  • private function Hue_2_RGB( $v1, $v2, $vH ){
  • if ( $vH < 0 ) $vH += 1;
  • if ( $vH > 1 ) $vH -= 1;
  • if ( ( 6 * $vH ) < 1 ) return ( $v1 + ( $v2 - $v1 ) * 6 * $vH );
  • if ( ( 2 * $vH ) < 1 ) return ( $v2 );
  • if ( ( 3 * $vH ) < 2 ) return ( $v1 + ( $v2 - $v1 ) * ( ( 2 / 3 ) - $vH ) * 6 );
  • return ( $v1 );
  • }
  • function tsl2rgb($T,$S,$L){
  • //HSL from 0 to 1
  • if ( $S == 0 ){
  • //RGB results from 0 to 255
  • $R = $L * 255;
  • $G = $L * 255;
  • $B = $L * 255;
  • }else{
  • if ( $L < 0.5 ){
  • $var_2 = $L * ( 1 + $S );
  • }else{
  • $var_2 = ( $L + $S ) - ( $S * $L );
  • }
  • $var_1 = 2 * $L - $var_2;
  • $R = 255 * $this->Hue_2_RGB( $var_1, $var_2, $T + ( 1 / 3 ) );
  • $G = 255 * $this->Hue_2_RGB( $var_1, $var_2, $T );
  • $B = 255 * $this->Hue_2_RGB( $var_1, $var_2, $T - ( 1 / 3 ) );
  • }
  • return array("R"=>$R,"G"=>$G,"B"=>$B);
  • }
  • function rgb2tsl($R,$G,$B){
  • //RGB from 0 to 255
  • $var_R = ( $R / 255 );
  • $var_G = ( $G / 255 );
  • $var_B = ( $B / 255 );
  • $var_Min = min( $var_R, $var_G, $var_B ); //Min. value of RGB
  • $var_Max = max( $var_R, $var_G, $var_B ); //Max. value of RGB
  • $del_Max = $var_Max - $var_Min; //Delta RGB value
  • $L = ( $var_Max + $var_Min ) / 2;
  • //This is a gray, no chroma...
  • if ( $del_Max == 0 ){
  • //HSL results from 0 to 1
  • $T = 0;
  • $S = 0;
  • }
  • //Chromatic data...
  • else{
  • if ( $L < 0.5 ){
  • $S = $del_Max / ( $var_Max + $var_Min );
  • }else{
  • $S = $del_Max / ( 2 - $var_Max - $var_Min );
  • }
  • $del_R = ( ( ( $var_Max - $var_R ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
  • $del_G = ( ( ( $var_Max - $var_G ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
  • $del_B = ( ( ( $var_Max - $var_B ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
  • if( $var_R == $var_Max ) $T = $del_B - $del_G;
  • else if ( $var_G == $var_Max ) $T = (( 1 / 3 ) + $del_R - $del_B);
  • else if ( $var_B == $var_Max ) $T = (( 2 / 3 ) + $del_G - $del_R);
  • if ( $T < 0 ){
  • $T += 1;
  • }
  • if ( $T > 1 ) {
  • $T -= 1;
  • }
  • }
  • return array("T"=>$T,"S"=>$S,"L"=>$L);
  • }
  • ?>
<?php
private function Hue_2_RGB( $v1, $v2, $vH ){
		if ( $vH < 0 ) $vH += 1;
		if ( $vH > 1 ) $vH -= 1;
		if ( ( 6 * $vH ) < 1 ) return ( $v1 + ( $v2 - $v1 ) * 6 * $vH );
		if ( ( 2 * $vH ) < 1 ) return ( $v2 );
		if ( ( 3 * $vH ) < 2 ) return ( $v1 + ( $v2 - $v1 ) * ( ( 2 / 3 ) - $vH ) * 6 );
		return ( $v1 );
	}

	function tsl2rgb($T,$S,$L){
		//HSL from 0 to 1
		if ( $S == 0 ){
			//RGB results from 0 to 255
			$R = $L * 255;                      
			$G = $L * 255;
			$B = $L * 255;
		}else{
			if ( $L < 0.5 ){
				$var_2 = $L * ( 1 + $S );
			}else{
				$var_2 = ( $L + $S ) - ( $S * $L );
			}
			$var_1 = 2 * $L - $var_2;
			$R = 255 * $this->Hue_2_RGB( $var_1, $var_2, $T + ( 1 / 3 ) ); 
			$G = 255 * $this->Hue_2_RGB( $var_1, $var_2, $T );
			$B = 255 * $this->Hue_2_RGB( $var_1, $var_2, $T - ( 1 / 3 ) );
		}
		return array("R"=>$R,"G"=>$G,"B"=>$B);
	}

	function rgb2tsl($R,$G,$B){
		//RGB from 0 to 255
		$var_R = ( $R / 255 );
		$var_G = ( $G / 255 );
		$var_B = ( $B / 255 );

		$var_Min = min( $var_R, $var_G, $var_B );    //Min. value of RGB
		$var_Max = max( $var_R, $var_G, $var_B );    //Max. value of RGB
		$del_Max = $var_Max - $var_Min;             //Delta RGB value

		$L = ( $var_Max + $var_Min ) / 2;

		//This is a gray, no chroma...
		if ( $del_Max == 0 ){
			//HSL results from 0 to 1
			$T = 0;
			$S = 0;
		}
		//Chromatic data...
		else{
			if ( $L < 0.5 ){
				$S = $del_Max / ( $var_Max + $var_Min );
			}else{
				$S = $del_Max / ( 2 - $var_Max - $var_Min );
			}

			$del_R = ( ( ( $var_Max - $var_R ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
			$del_G = ( ( ( $var_Max - $var_G ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
			$del_B = ( ( ( $var_Max - $var_B ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;

			if( $var_R == $var_Max ) $T = $del_B - $del_G;
			else if ( $var_G == $var_Max ) $T = (( 1 / 3 ) + $del_R - $del_B);
			else if ( $var_B == $var_Max ) $T = (( 2 / 3 ) + $del_G - $del_R);
			if ( $T < 0 ){
				$T += 1;
			}
			if ( $T > 1 )  {
				$T -= 1;
			}
		}
		return array("T"=>$T,"S"=>$S,"L"=>$L);
    }
?>

Conclusion

Merci à EasyRGB!!!
 

Historique

13 juin 2008 23:04:58 :
Mise en page

Commentaires et avis

signaler à un administrateur
Commentaire de aKheNathOn le 15/06/2008 00:31:29 10/10

source très utile pour les traitements d'images. Ligne 2 le private n'est pas utile, et pour suivre la logique de nommage de fonctions tu devrais l'appeller hue2rgb.

Merci pour la source et bonne continuation

signaler à un administrateur
Commentaire de Mrreivax le 15/06/2008 16:32:40

a la base, cette source vient d'une de mes classe. C'est la raison pour laquelle il y a "PRIVATE". "hue2rgb" n'est pas forcément utile, puisque cette fonction n'est appelé que par une fonction public. Donc, l'utilisateur n'y a pas accés directement. Mais c'est vrai que ca aurait été plus malin de l'appelé hue2rgb quand meme ^^

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Conversion BMP vers JPG [ par Manson ] Bonjour a tous,voilà j'aimerai savoir comment l'on peut faire pour convertir un BMP vers un JPG, car je ne trouve aucune fonction le permettant, alors HELP! conversion de variables [ par eax ] comment fait-on pour convertir une variable, par exemple:$toto=12,12,35,25250,251,1,0,2pour l'enregistrer dans un seul champ d'une base de données mys conversion de date [ par Joez ] voila je récupère la date de mysql sous la forme 2002-01-02 10:43:32 et je voudrais afficher cette date sous la forme Lundi 02 janvier 2002 à 10h4 probleme conversion HTML -> Texte -> HTML [ par Cho7Kipu ] Coucou tt le monde !Bon alors j'explik mon probleme :J'ai fait un site de partition. Pour que mon moteur puisse rechercher des mots contenu dans une d conversion d'un script js à php [ par pyranhaz ] Salut,comment convertir ce script javascript en php ???&lt;script language="Javascript"&gt;&lt;!--ID=window.setTimeout("window.location='htt Conversion de caractères issus de dbase.comment faire? [ par asterixobelix ] &lt;?php$base="eleves.dbf";$dbh =dbase_open($base,0);$nb_eleves=dbase_numrecords($dbh);print("$nb_eleves &lt;BR&gt;");$nb_champs=dbase_numfields($dbh) conversion code c++ vers PHP [ par karolina64 ] Bonjour,j'ai le code suivant écrit en C++ que je veux traduire en PHP :Maxord = 12;*snorm = 1.0;for (n=1; n&lt;=maxord; n++) {*(snorm+n) = *(snorm+n-1 conversion fichier .doc en .html [ par thoru ] Bonjour!Je débute en php et je ne sais pas s'il existe une possibilité de convertir un fichier .doc en fichier.html.Je vous explique je dois prendre d Tags Word - Conversion [ par jdaviaud ] Bonjour a tous,J'essaye desespérément de faire une interface d'import de fichiers texte pour les convertir ensuite en fichier HTML, tout fonctionne im conversion date [ par youyou26 ] je veux juste convertir une date dd/mm/yyyy en yyyy-mm-dd ou tt simplement yyyymmdd.la $Dte m'affiche dd/mm/yyyy dans le calendrier et ce que je veux


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,452 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.