如何使用 GD 或 Imagick 在非透明纯色图像内创建透明区域?

Posted

技术标签:

【中文标题】如何使用 GD 或 Imagick 在非透明纯色图像内创建透明区域?【英文标题】:How do I create a transparant area inside a non transparant solid color image using GD or Imagick? 【发布时间】:2013-08-20 12:01:45 【问题描述】:

使用 imagick 和 GD 库,我尝试制作具有透明中心的方形图像。我试着这样做:

$img = imagecreatetruecolor($width, $height); 

imagefilledrectangle($img, $left, $top, $right, $bottom, imagecolorallocate($img, 255, 255, 255)); 
imagecolortransparent($img, imagecolorallocate($img, 255, 255, 255));   

ob_start();    
ini_set('memory_limit', '-1');              
imagepng($img, './imagecolortransparent.png');
$blob = ob_get_clean();     

但是,对于中心小框,最终结果始终是不透明的。我在某处做错了吗?任何帮助将不胜感激:(。

【问题讨论】:

【参考方案1】:

您必须激活 imagesavealpha 才能获得透明度。

imagesavealpha($img,true);
imagepng($img, './imagecolortransparent.png');

【讨论】:

以上是关于如何使用 GD 或 Imagick 在非透明纯色图像内创建透明区域?的主要内容,如果未能解决你的问题,请参考以下文章

没有 Imagick 的图像调整大小并失去透明度

如何通过 Imagick 实现 imagecopy (GD) 功能?

使用 GD 的背景图像透明度

GD/Imagick 不保存我的图像

在 Yii 中使用 Imagick 和 GD

Matplotlib:如何在非透明线边缘处拥有透明的盒子图?