Problème changer couleur image en PHP

Authentiks Messages postés 16 Statut Membre -  
 tp -
Bonjour,

Voila j'aimerai changer la couleur des pixels d'une image suivant ce que l'utilisateur choisit dans la palette.

Alors j'ai trouvé un programme qui le fait pas trop mal. Le problème est qu'il change la couleur de l'image mise en exemple sur le site ( http://www.atelierphp.net/... losque je crée une image PNG, le changement de couleur ne fonctionne pas.

J'avoue être un peu perdu et pas trop comprendre le pourquoi du comment.
Je vous mets ci-dessous mon code:


<?php

header("Content-type:image/png");


$red = $_GET['red']; 
$green=$_GET['green'] ; 
$blue=$_GET['blue']; 
$image_N=$_GET['img'];
if(isset($_GET['num_corps']))
		{$num_image_corps = $_GET['num_corps'];}


$imageFile = "images/".$image_N.".png"; 

$myImage = ImageCreateFromPNG($imageFile);


changeImageColor($myImage,$red,$green,$blue);



if($image_N<10){
imagePNG($myImage, "images/new_corps.png");
header("location: corps.php?change=Y&num_corps=".$image_N."");}

elseif($image_N<20){
imagePNG($myImage, "images/new_yeux.png");
header("location: yeux.php?change=Y&num_yeux=".$image_N."&num_corps=".$num_image_corps."");}

//--------------------------------------
function changeImageColor($myImage,$red,$green,$blue) 
{ 
    for($i=0;$i<imagecolorstotal($myImage);$i = $i+1) 
      { 
          $col=ImageColorsForIndex($myImage,$i); 
        //si la couleur est proche de noire on la met a NOIRE  
        if($col['red']<=20 AND $col['green']<=20 AND $col['blue']<=20) 
					{$red_set=0; $green_set=0;  $blue_set=0;}
		//nouvelle couleur = couleur_saisie + ancienne_couleur
		else{
			$red_set=($red+$col['red']);  
			$green_set=($green+$col['green']); 
			$blue_set=($blue+$col['blue']); 
			if ($red_set >255) $red_set=255; 
			if ($green_set>255)$green_set=255; 
			if ($blue_set>255)$blue_set=255;
			}
			
          imagecolorset($myImage,$i,$red_set,$green_set,$blue_set);
      } 
}
?>



Voila donc si vous pouvez m'expliquez pourquoi ce code fonctionne pour l'image accéssible dans le lien que je vous ai mis en intro et pas avec toutes les images PNG ?!

Merci beaucoup à tous!!
A voir également:

1 réponse

tp
 
Bonjour,

A priopri, l'image PNG doit être en mode couleurs indexées (il vous faut un logiciel de traitement d'images pour faire cette conversion, choisir : mode > couleurs indexées).
Je vous invite à lire la leçon correspondante pour en savoir plus :
Leçon N° 17 : Création / Manipulation des images
http://www.atelierphp.net/lesson_17_images/lesson_17.php

Cordialement
tp
1