我试图通过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();
这会生成如下图像:
我正在寻找更像这样的东西:
(注意如何表示透明部分)
解决方法:
不要使用imagecopymerge()来合并透明图像.
最好在脚本中使用imagecopyresampled().