2011-04-12 2 views
0

J'ai un png avec un fond transparent. Le premier plan est une couleur unique. Je veux changer cette couleur unique tout en préservant le fond 100% alpha.Remplacer la couleur de l'image et maintenir 100% fond alpha

Le code ci-dessous ne fonctionne pas, il a fonctionné quand j'avais un gif. Cependant, quand j'ai changé le gif en png, puis j'ai ajouté les choses alpha, le changement de couleur est tombé en panne.

Si j'ajoute imagetruecolortopalette($im, false, 255); la couleur est modifiée mais alpha est perdu.

que quelqu'un peut me montrer où je vais envoyer les renseignements demandés

$imgname = "block.png"; 
$im = imagecreatefrompng($imgname); 
imagealphablending($im, false); 

$index = imagecolorclosest ($im, 153,153,153); // get Grey COlor 
imagecolorset($im,$index,0,0,0); // SET NEW COLOR 

imageAlphaBlending($im, true); 
imageSaveAlpha($im, true); 
$imgname = "result.png"; 
imagepng($im, $imgname); // save image as gif 
imagedestroy($im); 

EDIT :: C'est un script assez simple. Lorsque j'ai utilisé un gif, la couleur a changé et la nouvelle image a été enregistrée. Quand un changé en .png. La couleur ne change plus et l'image originale passe par le script inchangé.

+0

Définir "ne fonctionne pas" et "il est tombé en panne". –

+0

J'ai mis à jour la question –

+0

Définir "cassé" comme "arrêté de travailler" n'est pas utile. :) –

Répondre

0

Est-ce un PNG-24? Autant que je crois que cela ne fonctionnerait qu'avec PNG-8. Peut-être que vous pourriez essayer d'utiliser Imagick