Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

traitement d'image avec GD

1 réponse
Avatar
2en1
Bonjour,

Je suis vraiment coincé à cause d'un problème surement simple mais insoluble
pour moi :
Pourquoi l'exemple ci-dessous qui consiste à diminuer par 2 les valeurs RGB
de mon image (donc à l'assombrir) ne fonctionne pas ?

1. imagecolorstotal($pic) qui doit renvoyer le nombre de couleurs de mon
image vaut toujours 0, donc ne fonctionne pas à priori !
2. j'ai aussi l'impression que les fonctions imagecolorsforindex ou
imagecolorset ne font rien non plus (même si je force des valeurs à la main)
!!

Je fonctionne sous WIN XP avec easyphp et la librairie php_gd2.dll est bien
activée dans les extensions de php.ini.

Merci d'avance pour votre aide.


<?
header("content-Type:image/jpeg");
$pic = imagecreatefromjpeg("mon_image.jpg");
$colors_num = imagecolorstotal($pic);

for($i=0;$i<$colors_num;$i++)
{
$color = imagecolorsforindex($pic, $i);
$r = $color["red"];
$g = $color["green"];
$b = $color["blue"];
$r=$r*0.5;
$g=$g*0.5;
$b=$b*0.5;
imagecolorset($pic, $i, $r, $g, $b);
}
imagejpeg($pic);
?>

1 réponse

Avatar
Jean-Marc Molina
1. imagecolorstotal($pic) qui doit renvoyer le nombre de couleurs de
mon

image vaut toujours 0, donc ne fonctionne pas à priori !

Lis la doc :). 0 pour une image truecolor c'est logique, normal, ces images
n'ont pas de couleur par définition.

2. j'ai aussi l'impression que les fonctions imagecolorsforindex ou
imagecolorset ne font rien non plus (même si je force des valeurs à la main)

!!

Éh oui les images JPG n'ont pas de couleurs par exemple, juste des
informations de niveaux de couleur RVB qui vont de 0 à 255. Ces fonctions
sont uniquement valables pour des images « palettisée » (GIF 256 couleurs).
Faut lire le manuel de PHP ^^. Mais on peut passer à côté même en y faisant
attention :D.

JM

--
Boycothon (Contre l'e-censure) : http://www.odebi.org/boycothon/ ~ « Le LEN
tue la démocratie ».