Копирайте изображение с падаща сянка и прозрачен фон

Опитах се да дублирам 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