PHP: объединение изображений в альфа-полупрозрачное изображение с помощью GD - PullRequest
1 голос
/ 14 октября 2010

Я пытаюсь создать изображение с различным уровнем прозрачности, используя GD.Но я могу получить только полностью прозрачные или полностью непрозрачные пиксели на изображении.

Что я хочу получить: Что я действительно получаю:
http://bx.at.ua/i/se/stackoverflow/target.png http://bx.at.ua/i/se/stackoverflow/actual.png
http://bx.at.ua/i/se/stackoverflow/target-zoom.png http://bx.at.ua/i/se/stackoverflow/actual-zoom.png

Вот фрагмент кода , который я использовал для создания изображений, подобных этому ▲ фиксированный код:

$im=imagecreatetruecolor($sx,$sy);
imageantialias($im,true);
imagesavealpha($im,true);

$c00FF00=imagecolorallocate($im,0,255,0);
$cFFFFFF=imagecolorallocate($im,255,255,255); $cFFFFFF_00=imagecolorallocatealpha($im,255,255,255,127); imagecolortransparent($im,$cFFFFFF);

imagefilledrectangle($im,0,0,$sx,$sy,$cFFFFFF$cFFFFFF_00);

$sim=imagecreatefrompng('gradient.png');
imagecopy($im,$sim,$dest_x,$dest_y,0,0,imagesx($sim),imagesy($sim));
imagedestroy($sim);

imagettftext($im,$size,0,$text_x,$text_y,$c00FF00,$font,'Test');

header('Content-type: image/png');
imagepng($im);
imagedestroy($im);

Что я могу сделать, чтобы получить желаемый (полупрозрачный) результат?

Ответы [ 2 ]

2 голосов
/ 14 октября 2010

Вам необходимо позвонить imagesavealpha() против импортированного PNG ($ sim) перед объединением, а также против окончательного изображения.

0 голосов
/ 14 октября 2010

То, что вы ищете, это не прозрачность, а альфа.Альфа - это еще один цветной канал, который используется вместе с красным, зеленым и синим цветами для определения уровня прозрачности (видна только прозрачность или нет, в отличие от возможности установить уровень прозрачности).Проверьте imagecolorallocatealpha

...