我有以下内容,它的工作原理除了gif被认为是透明的并且它正在创建一个黑色背景,如果我将所有(imagesavealpha等)的东西更改为$ container然后它为文本创建了透明背景我添加到这个图像。我怎么去摆脱黑色背景?基本上这是一个签名类型的图像。我也写东西,我觉得你不需要看。
$im = imagecreatefromgif("bg.gif");
$container = imagecreatetruecolor(400, 160);
imagesavealpha($im, true);
imagealphablending($im, false);
$trans_colour = imagecolorallocatealpha($im, 0, 0, 0, 127);
$w = imagecolorallocate($container, 255, 255, 255);
imagefill($im, 0, 0, $trans_colour);
imagecopymerge($container, $im, 0, 0, 0, 0, 460, 180, 100);
答案 0 :(得分:1)
下面的解决方案比您选择的解决方案简单。它还直接解决了这个问题。
$transparencyIndex = imagecolortransparent($imageSrc);
$transparencyColor = array('red' => 255, 'green' => 255, 'blue' => 255);
if ($transparencyIndex >= 0) {
$transparencyColor = imagecolorsforindex($imageSrc, $transparencyIndex);
}
$transparencyIndex = imagecolorallocate(
$imageNew, $transparencyColor['red'], $transparencyColor['green'], $transparencyColor['blue']
);
imagefill($imageNew, 0, 0, $transparencyIndex);
imagecolortransparent($imageNew, $transparencyIndex);
要调整大小并存储GIF图像,可以分别使用imagecopyresampled()和imagegif()。
答案 1 :(得分:0)
我使用这两个函数来创建一个新的透明真彩色图像......
function image_createtruecolortransparent($x,$y)
{
$i = imagecreatetruecolor($x,$y);
$b = imagecreatefromstring(base64_decode(image_blankpng()));
imagealphablending($i,false);
imagesavealpha($i,true);
imagecopyresized($i,$b,0,0,0,0,$x,$y,imagesx($b),imagesy($b));
return $i;
}
function image_blankpng()
{
$c = "iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m";
$c .= "dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADqSURBVHjaYvz//z/DYAYAAcTEMMgBQAANegcCBNCg";
$c .= "dyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAAN";
$c .= "egcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQ";
$c .= "oHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAA";
$c .= "DXoHAgTQoHcgQAANegcCBNCgdyBAgAEAMpcDTTQWJVEAAAAASUVORK5CYII=";
return $c;
}
哪个应该做你需要的。只需将函数调用替换为imagecreatetruecolor(400,160); with image_createtruecolortransparent(400,160);并包括两个功能。
答案 2 :(得分:0)
此页面在PHP在线手册中非常有用:http://us2.php.net/manual/en/function.imagecolortransparent.php#89927。我链接到一个特定的评论,但至少看一看它们总是一个好主意。