PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 19-06-2011 22:09:47

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

Changer une couleur dans une image

Bonjour,

Mon image image.png est une image avec une forme blanche sur un fond transparent.
Le code suivant ne fonctionne pas : il ne transforme pas ma forme blanche en forme rouge.

[code php]
<?php
// Chargement de l'image
$im = imagecreatefrompng('image.png');
// On récupère l'index de la couleur blanche
$index = imagecolorclosest($im, 255, 255, 255);
// On change l'index en l'index de la couleur rouge (255, 0, 0)
imagecolorset($im, $index, 255, 0, 0);
// On ressort l'image
imagepng($im, '_image.png');
// On libère la mémoire
imagedestroy($im);
?>
[/code]

Merci.

Hors ligne

#2 19-06-2011 22:12:51

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

Re : Changer une couleur dans une image

Bon en fait, je change ce que je viens de dire : ça fonctionne.

MAIS, ça dépend du programme qui a fait la transparence...L'image sur laquelle je testais venais de PhotoShop. Ca ne fonctionne pas. Celle que je viens de modifier sur PhotoFiltre fonctionne. J'aimerais bien de pouvoir éviter de refaire toutes mes transparents avec PhotoFiltre...

Je suppose que c'est donc une question de format de l'image ou plus précisément de format de PNG (une histoire de PNG-24 et PNG-8 (seul le 8 serait géré par GD)) ?

Dernière modification par moijhd (19-06-2011 22:22:24)

Hors ligne

#3 20-06-2011 15:43:09

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Changer une couleur dans une image

Bonjour,

Si tes images sources Photoshop n'ont pas de transparence définie, et que tu as besoin d'image avec une transparence, je te confirme que tu es bon pour retraiter toutes tes images, et ce n'est pas une question de PNG-24 / PNG-8, car tous les formats PNG gèrent la transparence à ma connaissance.


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#4 20-06-2011 19:15:27

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

Re : Changer une couleur dans une image

Donc pour que Photoshop génère effectivement une transparence, il faut que j'ai un calque de background transparent et ce que je veux dessus ?
Ou encore, comment définir une transparence avec Photoshop parce que sous Photoshop, il y a bien les petits damiers gris et blancs...

Hors ligne

#5 20-06-2011 19:40:13

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Changer une couleur dans une image

Bonsoir,

Les calques transparents au sein d'une image n'on rien à voir avec la transparence de l'image elle même. Le but ici n'etant pas de te faire un cours sur photoshop, considère la transparence comme une couleur particulière qui est appliquée sur une couleur de masque (la plus appropriée selon la composition colorimétrique de ton image).

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#6 23-06-2011 05:59:00

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

Re : Changer une couleur dans une image

J'apporte la solution que j'ai trouvée, vous pourrez toujours essayer de m'en expliquer la raison ou d'en trouver une autre.

J'ai d'abord remarqué que lorsque je définissais une transparence avec PhotoFiltre, le fichier de sortie avec une profondeur de 8 alors que celle de PhotoShop pouvait valoir 24 ou 32. Par la suite, j'ajoutais en PHP des images sur d'autres images avec imagecopymerge et je me retrouvais avec une dégradation de l'image en 8.

Donc, je me suis arrangé pour n'avoir que des 24.

Par la suite, lorsque j'éditais un fichier, je mettais toujours une calque de fond uni (rouge). Ensuite, je savais qu'en un point de mon image, il y avait ce fond, je récupérais alors la couleur et la déterminais comme couleur de transparence. Le problème que je me pose ici est comment choisir cette couleur (je n'avais pas de rouge donc cela m'allait bien, mais quand même je trouve que c'est assez génant).

Après, il y a des histoires d'alphablending et de savealpha ^^

++

Hors ligne

Pied de page des forums