2009-06-04 9 views

Répondre

2

La bibliothèque GD prend en charge la transparence alpha donc cela ne devrait pas être un problème. Voici comment je l'ai mis ensemble - vous devrez peut-être modifier cela, mais l'essentiel de celui-ci devrait être là. Les nombres de rouge/vert/bleu sont compris entre 0 et 255. Alpha est 0-127 (127 étant complètement transparent). Ce code doit appliquer une teinte rouge de 50% à l'image "original.png" et être affiché comme "output.png".

<?php 

$red = 255; 
$green = 0; 
$blue = 0; 
$alpha = 63 

$src_img = imagecreatefrompng("original.png"); 
$tint_img = imagecreatetruecolor(imagesx($im_src), imagesy($im_src)); 
$tintcolor = imagecolorallocate($tint_img, $red, $green, $blue, $alpha); 
imagefill($tint_img, 0, 0, $tintcolor); 
imagecopymerge($tint_img, $src_img, 0, 0, 0, 0, imagesx($im_src), imagesy($img_src), 100); 
imagepng("output.png"); 

?> 
7

La solution ci-dessus n'a pas fonctionné pour moi.

Vous remplissez la région alpha ici avec du rouge; Je crois que ce n'est pas l'objectif. L'objectif est de teinter le reste de l'image et de laisser l'alpha inchangé. (En outre, une mauvaise utilisation de la fonction imagecolorallocate, vous devez utiliser imagecolorallocatealpha.)

J'ai réussi à utiliser imagefilter et coloriser comme suit:

imagefilter (image $, IMG_FILTER_COLORIZE, 0, 255, 0, 30);

pour appliquer une teinte.

+0

Cela a fonctionné comme un charme, merci. – Casey

+0

+1 pour une réponse épique simple! – Bojangles

Questions connexes