【问题标题】:PHP: Merging images into an alpha translucent image with GDPHP:使用 GD 将图像合并为 alpha 半透明图像
【发布时间】:2011-04-25 12:12:36
【问题描述】:

我正在尝试使用 GD 创建具有不同透明度的图像。但我只能在图像中获得完全透明或完全不透明的像素。

我想要得到的东西:                                                     我实际得到的东西:

(来源:bx.at.ua

                                                            
(来源:bx.at.ua


(来源:bx.at.ua


(来源:bx.at.ua

这是我用来创建像这样的图像的一段代码▲固定代码:

$im=imagecreatetruecolor($sx,$sy);
imageantialias($im,true);
imagesavealpha($im,true);

$c00FF00=imagecolorallocate($im,0,255,0);
$cFFFFFF=imagecolorallocate($im,255,255,255); $cFFFFFF_00=imagecolorallocatealpha($im,255,255,255,127); imagecolortransparent($im,$cFFFFFF);

imagefilledrectangle($im,0,0,$sx,$sy,$cFFFFFF$cFFFFFF_00);

$sim=imagecreatefrompng('gradient.png');
imagecopy($im,$sim,$dest_x,$dest_y,0,0,imagesx($sim),imagesy($sim));
imagedestroy($sim);

imagettftext($im,$size,0,$text_x,$text_y,$c00FF00,$font,'Test');

header('Content-type: image/png');
imagepng($im);
imagedestroy($im);

我该怎么做才能获得想要的(半透明)结果?

【问题讨论】:

    标签: php image-processing transparency gd


    【解决方案1】:

    您要寻找的不是透明度,而是 alpha。 Alpha 是另一个颜色通道,它与红色、绿色和蓝色一起确定透明度级别(只是透明可见或不可见,而不是能够设置透明度级别)。查看imagecolorallocatealpha

    【讨论】:

    • 这并没有回答问题……至少,你给了我一个提示,我应该编辑标题
    • 抱歉,我以为您正在尝试为文本添加透明度,在这种情况下,您将在设置 $c00FF00 变量时使用 imagecolorallocatealpha。您在请求中输入的图片只是给我一个超时错误,所以我看不到示例图片。
    【解决方案2】:

    您需要在合并之前针对您导入的 PNG ($sim) 以及针对最终图像调用 imagesavealpha()

    【讨论】:

    • 我需要尝试一下,因为现在我得到了相反的结果:白色背景和透明图像:D
    猜你喜欢
    • 2012-10-12
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 2011-03-30
    • 2013-03-17
    • 2011-09-28
    相关资源
    最近更新 更多