我将尝试使用PHP制作一个由多个具有背景透明度的PNG图像组成的复合图像,并将结果存储在数据库中。但是,当我合并这些图像时,我的问题在于它们的透明部分被丢失了。
以下是创建复合图像的代码:
这将产生这样的图像:
我正在寻找更像这样的东西:
(注意透明部分的表示方式)
以下是创建复合图像的代码:
$base = imagecreatefrompng('application/assets/images/vel1_bg.png');
imagealphablending($base, true);
list($baseWidth, $baseHeight, $type, $attr) = getimagesize('application/assets/images/vel1_bg.png');
$user_board_items = $this->config->item('user_board_items');
foreach($array as $key => $value){
$item = imagecreatefrompng('application/assets/images/items/' . $user_board_items[$value[0]] . '.png');
imagealphablending($item, true);
list($width, $height, $type, $attr) = getimagesize('application/assets/images/items/'. $user_board_items[$value[0]] . '.png');
imagecopymerge($base,
$item,
floor(($value[1] / 100) * $baseWidth),
floor(($value[2] / 100) * $baseHeight),
0,
0,
$width,
$height,
100);
imagedestroy($item);
}
//We have to capture the output buffer
ob_start();
imagepng($base);
$baseimg = ob_get_clean();
这将产生这样的图像:
![输入图像描述](https://istack.dev59.com/jeu8B.webp)
![输入图像描述](https://istack.dev59.com/ibzfR.webp)
imagecopymerge
可能会导致问题。尝试使用imagecopyresampled
替代。 - Mike