[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP GD PNG: Правильная прозрачность фона
Matiss
:) Всем привет!
Есть образная упрощенная задача: составить картинку из 2 "плюсов" и 1 "круга".
Каждая картика-фигура (PNG) имеет прозрачный фон.

Есть два варианта кода:
1.
<?php
$img1=ImageCreateFromPNG('plus.png');
imagealphablending($img1, false);
imageSaveAlpha($img1, true);

$img2=ImageCreateFromPNG('round.png');
imagealphablending($img2, false);
imageSaveAlpha($img2, true);

$img3=imagecreatetruecolor(400,200);
imagealphablending($img3, false);
imageSaveAlpha($img3, true);
$trans = imagecolorallocatealpha($img3, 0, 0, 0, 127);
imagefilledrectangle($img3, 0, 0, 400, 200, $trans);

imagecopy($img3, $img1, 0, 0, 0, 0, 200, 200);
imagecopy($img3, $img1, 200, 0, 0, 0, 200, 200);

imagecopy($img3, $img2, 100, 0, 0, 0, 200, 200);


header('Content-type: image/png');
imagePNG($img3);
?>
Результат:
(прозрачный фон - хорошо, но накладываемый в верхнем слое круг "прорезает" своим прозрачным фоном всё готовое изображение)
user posted image

2.
<?php
$img1=ImageCreateFromPNG('plus.png');
imagealphablending($img1, false);
imageSaveAlpha($img1, true);

$img2=ImageCreateFromPNG('round.png');
imagealphablending($img2, false);
imageSaveAlpha($img2, true);

$img3=imagecreatetruecolor(400,200);

imagecopy($img3, $img1, 0, 0, 0, 0, 200, 200);
imagecopy($img3, $img1, 200, 0, 0, 0, 200, 200);

imagecopy($img3, $img2, 100, 0, 0, 0, 200, 200);


header('Content-type: image/png');
imagePNG($img3);
?>
Результат:
(фон черный, но зато "круг" и все последующие слои накладываются как нужно - их фон убирается и видно то, что за ними)
user posted image

Помогите найти решение, при котором общий фон будет прозрачным, а каждый новый слой будет накладываться правильно, не "прорезая" все изображение.
:lol: Спасибо!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.