Leçon N° 17 : Création / Manipulation des images
Changer la couleur d'une imageSolutionSolution & source***
Comment faire pour que le noir de l'éléphant reste bien noir
Notes de page
Source: lesson_17_c0_change_color.phpRésultat
<align=left>
L'image de départ doit être en png ou couleurs indéxées: 
<img src="../images/elephant_8.jpg"><br/>
Grille des couleurs de l'image :<br/>
<img src="../images/elephant_8_colors.jpg"><br/>
<table><tr><th colspan=2 align=left>
<form 
    action="../commons/show_exercises.php?
    exercise=lesson_17_c1_change_color.php" 
    method="post">
Spécifier la couleur pour l'éléphant :
</th></tr><tr><td>
Rouge (0 à 255)</td><td><input type="text" name="red" value=0>
</td></tr><tr><td>
Vert (0 à 255)</td><td><input type="text" name="green" value=0>
</td></tr><tr><td>
Bleu (0 à 255)</td><td><input type="text" name="blue" value=190>
</td></tr><tr><td colspan=2>
<input type="submit" name="send_color" 
value="Valider" 
</td></tr></table>
<!--<img src="../exercises/img_c0_change_color.php">-->



Fichier : lesson_17_c1_change_color.php
<?php
/* pour éviter le piratage, on vérifie la valeur saisie */
if (!is_numeric($_POST["red"])) { $_POST["red"] = ; }  
if (!
is_numeric($_POST["green"])) { $_POST["green"] = ; }  
if (!
is_numeric($_POST["blue"])) { $_POST["blue"] = ; }  
empty(
$_SESSION)? session_start():print"";
$_SESSION["red"] = ($_POST['red']);
$_SESSION["green"] = ($_POST['green']);
$_SESSION["blue"] = ($_POST['blue']);
//dans la pratique on pourra ecrire :
//header("Location: lesson_17_c2_change_color.php");
echo "<a href='../commons/show_exercises.php?
    exercise=lesson_17_c2_change_color.php'>
Afficher l'image</a>" 
;
?>

Fichier : img_c0_change_color.php
<?php
//on spécifie le header pour que le navigateur 
//ne la prenne pas comme du texte
header("Content-type:image/png");

$imageFile "../images/elephant_8.png"
$myImage ImageCreateFromPNG($imageFile);
//colors ranges 0 to 100
empty($_SESSION)? session_start():print"";
$red $_SESSION['red']; 
$green=$_SESSION['green'] ; 
$blue=$_SESSION['blue'];  
//$red=2 ;$green=220 ; $blue=0;
changeImageColor($myImage,$red,$green,$blue);
imagePNG($myImage);
exit();
//--------------------------------------
function changeImageColor($myImage,$red,$green,$blue

    for(
$i=0;$i<imagecolorstotal($myImage);$i $i+1
      { 
          
$col=ImageColorsForIndex($myImage,$i); 
          
//nouvelle couleur = couleur_saisie + ancienne_couleur
          
$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);
      } 
}
?>

L'image de départ doit être en png ou couleurs indéxées:
Grille des couleurs de l'image :

Spécifier la couleur pour l'éléphant :
Rouge (0 à 255)
Vert (0 à 255)
Bleu (0 à 255)

Tous droits réservés. 2005-2020