透明叠加创建PNG

Posted

技术标签:

【中文标题】透明叠加创建PNG【英文标题】:Transparent Overlay Creating PNG 【发布时间】:2015-09-30 12:47:25 【问题描述】:

我有下面的功能,我已经得到了我需要的大小,现在我正在添加背景图像,然后希望在所有覆盖文本上添加具有透明背景的文本覆盖,但 imagefilledrectangle 适用变量$white 是预期的,我试图看看是否有任何方法告诉函数是透明的而不是接受颜色,在这种情况下为白色,php 文档说颜色是@的必需参数987654323@,任何建议都非常感谢。

背景图片是本地图片:

define("BACKGROUND_FILE", "background.png");

功能:

public function generateImage()

    if (file_exists(BACKGROUND_FILE))      
        $im = @imagecreatefrompng(BACKGROUND_FILE);

        if($im) 
            $white = imagecolorallocate($im, 255, 255, 255);
            $black = imagecolorallocate($im, 115, 150, 195);

            imagefilledrectangle($im, 0, 0, 399, 29, $white);

            $text = 'Test';
            $font = 'arial_narrow_7.ttf';

            imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

            imagepng($im);
            imagedestroy($im);
         else 
            echo 'Error';
        
    

我尝试在imagefilledrectangle 之前添加imagecolortransparent($im, $white);,但没有任何区别。

【问题讨论】:

【参考方案1】:

想通了,函数中不需要imagefilledrectangle 行,下面给出了透明的覆盖文本元素,因为现在没有应用填充。

public function generateImage()

    if (file_exists(BACKGROUND_FILE))      
        $im = @imagecreatefrompng(BACKGROUND_FILE);

        if($im) 
            $black = imagecolorallocate($im, 115, 150, 195);

            $text = 'Test';
            $font = 'arial_narrow_7.ttf';

            imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

            imagepng($im);
            imagedestroy($im);
         else 
            echo 'Error';
        
    

【讨论】:

以上是关于透明叠加创建PNG的主要内容,如果未能解决你的问题,请参考以下文章

使用 ImageMagick/convert 创建半透明 PNG

在 Imagemagick 中创建的透明 PNG 在 FFMPEG 中绘制为不透明

php怎么将多张透明的PNG图叠加在一起生成新照并保存

GD图像叠加透明png

如何在带有文本的图像上方创建透明的深色叠加层?

QImage在具有透明度的PNG中设置alpha