Recolorisation d'une image avec la lib. GD

cs_fanfouer Messages postés 209 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 27 janvier 2008 - 18 févr. 2006 à 12:39
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 18 févr. 2006 à 17:20
Bonjour,
Je cherche a faire un petit script à l'aide de la librairie GD pour changer les couleurs d'une image que je lui passe à l'aide d'un formulaire d'upload.
Je suis hebergé chez OVH et la librairie GD est activée.
En guise de précision, j'aimerai que le script prenne une couleur que j'aurais pris le soin de définir à l'avance et me la remplace avec une autre définie elle aussi.

Merci de votre aide et bonne après midi

5 réponses

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
18 févr. 2006 à 13:18
Salut,

consulte ça : http://fr.php.net/manual/fr/function.imagecolorresolve.php
et ça :
http://fr.php.net/manual/fr/function.imagecolorset.php

a +

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
cs_fanfouer Messages postés 209 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 27 janvier 2008
18 févr. 2006 à 13:57
Effectivement c'est pas mal. Ca peut servir a trouver les couleurs a changer.
Reste maintenant a trouver la fonction permettant de changer la couleur car il s'agit ici de remplacer une couleur présente dans l'aimge par une autre que j'aurais donnée moi dans le script.
Tout ca dans le but de changer totalement les couleurs de l'image.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
18 févr. 2006 à 14:31
Heu je comprends pas ton dernier message. Tu veux bien remplacer une couleur par une autre non ?

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
cs_fanfouer Messages postés 209 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 27 janvier 2008
18 févr. 2006 à 16:14
Oui, et j'ai trouvé entre temps...
regarde :
<?
$filePath='MonImage.png'; // Chemin de l'image
//Déclaration Array
$NbCouleur = 20;
$couleur_orig = array(
"eau"=>array("59AFDD", "62A3C5", "5BABD6"),
"foret"=>array("A3DBB0"),
"Ilots"=>array("FFE3B1"),
"Fond"=>array("FFF3DC",
"BordsRte"=>array("#87817F",
"route60"=>array("FFA985",
"route40"=>array("FFF991",
"route20"=>"FFFFFF",
"chemin"=>"E3D1BA");
$couleur_new = array(
"eau"=>array("000000"),
"foret"=>"000000",
"Ilots"=>"000000",
"Fond"=>"000000",
"BordsRte"=>"FFFFFF",
"route60"=>"000000",
"route40"=>"000000",
"route20"=>"000000",
"chemin"=>"000000");
$couleur_type = array("eau", "foret", "Ilots", "Fond", "BordsRte", "route60", "route40", "route20", "chemin");


img_color($filePath,$couleur_orig, $couleur_new, $couleur_type, $NbCouleur);
function img_color($filePath,$couleur_orig, $couleur_new, $couleur_type, $NbCouleur){
// crée l'image et compte ses couleurs
$im = img_create($filePath);
if(!empty($im)){
$k=imagecolorstotal($im);
// si l'image est en truecolor, convertit en palette
if(!$k){
imagetruecolortopalette($im,true,65536*256);
}
for($i=0;$i<$NbCouleur;$i++){
$type = $couleur_type[$i];
for($j=0;$j<10;$j++){
//--------------------------------- COULEUR ORIGINALE --------------------------------------------
$couleurOrig = $couleur_orig[$type][$j];//On sort la valeur de la couleur a changer des array déclarés plus haut
//Décomposition composantes
if($couleurOrig[0]=='#'){
$couleurOrig = substr($couleurOrig,1);//On vire le '#" si il existe en début de chaine
}
$rougeOrig = hexdec(substr($couleurOrig,0,2));//On sort la valeur en Base 10 de la veleur du rouge
$vertOrig = hexdec(substr($couleurOrig,2,2));//On sort la valeur en Base 10 de la veleur du vert
$bleuOrig = hexdec(substr($couleurOrig,4,2));//On sort la valeur en Base 10 de la veleur du bleu
//Obentention de l'index
$couleurOrigIndex = imagecolorexact ($im, $rougeOrig, $vertOrig, $bleuOrig);//On récupere l'index de la couleur a changer

//--------------------------------- NOUVELLE COULEUR --------------------------------------------
$couleurNew = $couleur_new[$type][0];//On sort la valeur de la couleur a changer des array déclarés plus haut
//Décompostion composantes
if($couleurNew[0]=='#'){
$couleurNew = substr($couleurNew,1);//On vire le '#" si il existe en début de chaine
}
$rougeNew = hexdec(substr($couleurNew,0,2));//On sort la valeur en Base 10 de la veleur du rouge
$vertNew = hexdec(substr($couleurNew,2,2));//On sort la valeur en Base 10 de la veleur du vert
$bleuNew = hexdec(substr($couleurNew,4,2));//On sort la valeur en Base 10 de la veleur du bleu
//On change de couleur
imagecolorset($im, $couleurOrigIndex, $rougeNew, $vertNew, $bleuNew);
}
}
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
}else{
echo'image non créee..';
}
}

function img_create($n){if(!file_exists($n)){echo"pas d'image";}
[mailto:$z=@imagecreatefrompng($n $z=@imagecreatefrompng($n]);
return $z;}
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
18 févr. 2006 à 17:20
J'ai pas le temps de chercher une solution plus simple mais ça me semble bien long pour ce qu'il y a à faire ;-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
Rejoignez-nous