Есть образная упрощенная задача: составить картинку из 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);
?>
(прозрачный фон - хорошо, но накладываемый в верхнем слое круг "прорезает" своим прозрачным фоном всё готовое изображение)
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);
?>
(фон черный, но зато "круг" и все последующие слои накладываются как нужно - их фон убирается и видно то, что за ними)
Помогите найти решение, при котором общий фон будет прозрачным, а каждый новый слой будет накладываться правильно, не "прорезая" все изображение.
:lol: Спасибо!