我需要使用PHP中的GD库,使用透明度不同的另一个PNG图像的4个部分创建PNG图像。例如:PHP GD库中的图像透明度
我试图做这件事情的方式不同,但我coudn't达到预期的效果。
预先感谢您;)
我需要使用PHP中的GD库,使用透明度不同的另一个PNG图像的4个部分创建PNG图像。例如:PHP GD库中的图像透明度
我试图做这件事情的方式不同,但我coudn't达到预期的效果。
预先感谢您;)
与imagecreatefrompng加载图像()。使用imagecreatetruecolor()创建一个真彩色图像,然后使用imagecolorallocatealpha()和imagefill()将其设置为完全透明。然后使用imagealphablending()为源图像和目标图像设置alpha混合模式。在此之后,您可以使用imagecopymerge()复制带有alpha的图像。
不幸的是,为imagecopymerge()强制执行一个alpha乘法器是不可能的,所以这只会让你只有一半 - 不方便的选项包括在图像的那些部分重复调用imagecopymerge()调用,取决于您要使用的透明度级别,还是逐像素地逐像素地处理多个源图像之间的数据,这不便慢。
如果您未结合图片*功能,请考虑使用ImageMagick代替。它更健壮。
我这样做:
$output = imagecreatetruecolor([width], [height]);
imagesavealpha($output , true);
$trans_colour = imagecolorallocatealpha($output , 0, 0, 0, 127);
imagefill($output , 0, 0, $trans_colour);
现在的形象是透明的:)
整个脚本:
$output = imagecreatetruecolor([width], [height]);
imagesavealpha($output , true);
$trans_colour = imagecolorallocatealpha($output , 0, 0, 0, 127);
imagefill($output , 0, 0, $trans_colour);
header('Content-Type: image/png');
imagepng($output);
imagedestroy($output);
希望它能帮助!
这对我来说既可以使用gif也可以使用png(当然,如果使用该图像类型,则将此示例中的每个png引用都更改为gif)。
$virtual_image = imagecreatetruecolor($desired_width, $desired_height);
$colour = imagecolorallocate($virtual_image,255,255,255);
imagefill($virtual_image , 0, 0, $colour);
imagealphablending($virtual_image,true);
imagesavealpha($virtual_image , true);
//the next line only if you're resizing to a new $width/$height, otherwise leave this line out
imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height);
header('Content-Type: image/png');
if (imagepng($virtual_image)) imagedestroy($virtual_image);
你使用了哪些GD函数,以及哪种方法? –
我在大多数情况下使用imagecopy()和imagecopymerge(),几次我得到的图像完全是空白的,有时是黑色的,我真的在GD) – micnic