Colorise une image avec gd

Contenu du snippet

Fonction permettant la coloration d'une image de type varié avec une couleur,
convertit au besoin l'image true color en image colorisable.

Source / Exemple :


<? 
$n='c:/images/img02.gif';	// Chemin de l'image
$color='FF00FF';			// Couleur du filtre(en hexadecimal)
img_color($n,$color);		// Appel de la fonction

function img_color($n,$color){
// crée l'image et compte ses couleurs
$im=img_create($n);if(!empty($im)){$k=imagecolorstotal($im);
// si l'image est en truecolor, convertit en palette
if(!$k){imagetruecolortopalette($im,true,65536*256);$k=imagecolorstotal($im);}
// Récupère les composantes RGB de $color
if($color[0]=='#'){$color=substr($color,1);}
$r=hexdec(substr($color,0,2))/255;$v=hexdec(substr($color,2,2))/255;$b=hexdec(substr($color,4,2))/255;
// on décompose la couleur RVB ( .299 + .587 + .114 = 1 )* repectivement par leurs composantes R & V & B
for($i=0;$i<$k;$i++){$c=imagecolorsforindex($im,$i);
$rouge=.299 * ($c['red'])+ .587 * ($c['green'])+ .114 * ($c['blue']);
$vert =.299 * ($c['red'])+ .587 * ($c['green'])+ .114 * ($c['blue']);
$bleu =.299 * ($c['red'])+ .587 * ($c['green'])+ .114 * ($c['blue']);
// pour chaque couleur de palette on applique le filtre
imagecolorset($im,$i,$rouge*$r,$vert*$v,$bleu*$b);}
// le header comme quoi ce document est une image jpg et on 
//affiche l'image : imagejpeg($im,'chemin d'écriture du fichier',int(qualité));
header('Content-type: image/jpg');imagejpeg($im);
imagedestroy($im);}else{echo'image non créee..';}}

function img_create($n){if(!file_exists($n)){echo"pas d'image";}
$z=@imagecreatefromjpeg($n);
if(empty($z)){$z=@imagecreatefrompng($n);}
if(empty($z)){$z=@imagecreatefromgif($n);}
if(empty($z)){$z=@imagecreatefromwbmp($n);}
if(empty($z)){$z=@imagecreatefromxpm($n);}
if(empty($z)){$z=@imagecreatefromxbm($n);}
if(empty($z)){$z=@imagecreatefromgd2($n);}
if(empty($z)){$z=@imagecreatefromgd($n);}
if(empty($z)){$z=@imagecreatefromstring($n);}
if(empty($z)){$z=@imagecreatefromgd2part($n);}
return $z;}?>

Conclusion :


Alors une image en true color retourne 0 sur la fonction imagecolorstotal
et si l'image n'est pas du type approprié les fonctions createfrom retournent
0 également...mais bon ya quand meme le choix..

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.