14
我想在PHP中结合GD进行以下操作。不幸的是,ImageMagick不是一个选项,但这看起来像是一个常见的问题,有是一个解决方案,我似乎无法找到它。PHP/GD - 透明背景
我想创建一个透明背景的PNG。然后我想在它上面画一个矩形,在它上面复制一个图像,然后添加一些文本。这样做的一种方式如下:
$image = ImageCreateTrueColor (800, 600);
imagecolortransparent ($image, 0); //0 is pure black, the default fill color
imagerectangle (...);
//code to copy an image
imagettftext ($image, ...);
imagepng ($image);
这工作正常,但复印图像的那部分可能是黑色的,和/或文字可能是黑色的。这然后也变得透明,这是我不要想要的。
imagefill ($image, 0,0, 0x7FFF0000);
imagetransparent ($image, 0x7FFF0000);
上面的代码是我在网上找到的,它与红色填充它,然后让红色透明。同样,这会导致图像中的所有红色变得透明。我可以选择一种不太可能发生的颜色,但我不能保证这一点。
有什么我失踪了吗?这可以解决吗? 感谢您的回复!
imagealphablending默认为true真彩色图像,所以这并没有什么不同:) 此外,imagecreatetruecolor创建了一个黑色的形象,这是为什么第一段代码使用imagecolortransparent(0); – Spinal 2013-03-06 12:08:05
在这种情况下,我看不到您的问题。我通过在中心画一个黑色的长方形来测试上述情况,它的工作很好,透明度很高。 – 2013-03-06 12:09:32
真的吗?然后,我的设置可能有问题,因为如果我尝试下面的代码,我会看到一个黑色的蓝色矩形! $ image = imagecreatetruecolor(800,600); imagealphablending($ image,true); imagefilledrectangle($ image,50,50,750,550,imagecolorallocate($ image,0,0,128)); header('Content-type:image/PNG'); imagepng($ image); – Spinal 2013-03-06 12:18:27