如何使图像本身透明/ Alpha与GD?

时间:2013-12-03 08:56:57

标签: php php-gd

在PHP GD中,是否可以使图像自我透明?我不是在谈论背景等。是否可以拍摄PNG图像,并使图像透明?

例如:

$c = imagecreatefrompng($urlToImage);
imagefill($c, 0, 0, imagecolorallocatealpha($c, 255, 255, 255, 50)); // 50 alpha.

imagepng($c);

然而,这没有做任何事情。有什么我想念的吗?谢谢。

1 个答案:

答案 0 :(得分:1)

您忘记使用imagecolortransparent()功能。更多: http://www.php.net/manual/en/function.imagecolortransparent.php

从评论中得到的是一个添加透明度的例子

if($transparency) {
        if($ext=="png") {
            imagealphablending($new_img, false);
            $colorTransparent = imagecolorallocatealpha($new_img, 0, 0, 0, 127);
            imagefill($new_img, 0, 0, $colorTransparent);
            imagesavealpha($new_img, true);
        } elseif($ext=="gif") {
            $trnprt_indx = imagecolortransparent($img);
            if ($trnprt_indx >= 0) {
                //its transparent
                $trnprt_color = imagecolorsforindex($img, $trnprt_indx);
                $trnprt_indx = imagecolorallocate($new_img, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);
                imagefill($new_img, 0, 0, $trnprt_indx);
                imagecolortransparent($new_img, $trnprt_indx);
            }
        }
    } else {
        Imagefill($new_img, 0, 0, imagecolorallocate($new_img, 255, 255, 255));
    }