首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用白色PHP GD替换透明bg

问用白色PHP GD替换透明bg
EN

Stack Overflow用户
提问于 2017-07-22 20:42:14
回答 1查看 575关注 0票数 2

我在php中生成了一个图像,如下所示:

代码语言:javascript
复制
$base = imagecreatefromstring(file_get_contents($_GET['imgSRC']));
imagepalettetotruecolor($base);
$background = imagecolorallocate($base, 0, 0, 0);
imagecolortransparent($base, $background);
imagealphablending($base, false);
imagesavealpha($base, true);

图像有一个透明的背景,我想用白色替换任何透明的像素。做这件事最干净的方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2018-09-12 16:43:07

创建一个实体图像并在其上复制透明图像对我来说很有效:

代码语言:javascript
复制
class Solid {
    static function white() {
        return new self(255, 255, 255);
    }

    function __construct($red, $green, $blue) {
        $this->red = $red;
        $this->green = $green;
        $this->blue = $blue;
    }

    function under($pic) {
        $w = imagesx($pic);
        $h = imagesy($pic);

        $buffer = imagecreatetruecolor($w, $h);
        imagefilledrectangle($buffer, 0, 0, $w, $h,
            imagecolorallocate($buffer, $this->red, $this->green, $this->blue));

        imagecopy($buffer, $pic, 0, 0, 0, 0, $w, $h);

        return $buffer;
    }
}

我是这样使用它的:

代码语言:javascript
复制
$solid_picture = Solid::white()->under($transparent_picture);

如果您的图片具有imagecopy通道,请考虑使用imagecopymerge()而不是alpha。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45254690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档