Скопируйте изображение с тенью и прозрачным фоном

Я попытался продублировать изображение PNG с тенью (т.е. альфа-каналом) и прозрачным фоном. Однако полученное изображение окрашивает тень и прозрачный фон в черный цвет. Я пробовал с imagecopy и imagecopymerge; ни один из них не дал достоверных результатов, которые не совпадают с исходным изображением.

Предварительный просмотр изображений.

$src = imagecreatefrompng('img_box3-bg.png');

/* Using imagecopy. */
$dest = imagecreatetruecolor(116, 100);
imagecopy($dest, $src, 0, 0, 0, 0, 116, 100);
imagepng($dest, 'img_box3-bg.imagecopy.png');
imagedestroy($dest);

/* Using imagecopymerge. */
$dest2 = imagecreatetruecolor(116, 100);
imagecopymerge($dest2, $src, 0, 0, 0, 0, 116, 100, 100);
imagepng($dest2, 'img_box3-bg.imagecopymerge.png');
imagedestroy($dest2);

imagedestroy($src);

Помощь? Заранее спасибо.


person moey    schedule 21.07.2011    source источник


Ответы (1)


Что-то вроде этого:

$src = imagecreatefrompng('img_box3-bg.png');

/* Using imagecopy. */
$dest = imagecreatetruecolor(116, 100);

// this is new
imagesavealpha($dest, true);
$transparent = imagecolorallocatealpha($dest, 0, 0, 0, 127);
imagefill($dest, 0, 0, $transparent);

imagecopy($dest, $src, 0, 0, 0, 0, 116, 100);

header('Content-Type: image/png');
imagepng($dest);
imagedestroy($dest);
person Yoshi    schedule 21.07.2011
comment
Я думаю, вы имели в виду $dest вместо $img в приведенном выше фрагменте. К сожалению, это не помогло. Еще раз взгляните на ссылку/страницу предварительного просмотра: я добавил новое изображение, которое было сделано с использованием предложенных методов. - person moey; 21.07.2011
comment
@ Siku-Siku.Com изменил пример, он работает на моей тестовой машине. Надеюсь, поможет! - person Yoshi; 21.07.2011