首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在透明gif上放置水印

在透明gif上放置水印
EN

Stack Overflow用户
提问于 2018-03-12 10:32:30
回答 1查看 85关注 0票数 0

我试图制作一个图像上传器,除了在透明的gif上放置水印外,一切都运行得很好。如果它本身是透明的,但是由于某种原因,放置在gif透明背景上的水印部分会有一个红色的背景,我很难找到原因。有什么建议吗?

代码语言:javascript
运行
复制
else if ($this->fileType === "image/gif") {

    $newFilename = $this->placeholder();
    $img = imageCreateFromGif($this->fileTmpName);
    imageAlphaBlending($img, true);
    imageSaveAlpha($img, true);

    if($this->watermarkEnabled === true) {

        $this->watermark($img);

    }

    $newFilename = imageGif($img, $newFilename.".".$this->fileExtension); 


}

function watermark($img) {

    // creating png image of watermark
    $watermark = imagecreatefrompng($this->watermarkImage); 

    // getting dimensions of watermark image
    $watermarkWidth = imagesx($watermark);  
    $watermarkHeight = imagesy($watermark);

    // placing the watermark 10px from bottom and right
    $destX = $this->imageSize[0] - $watermarkWidth - 10;  
    $destY = $this->imageSize[1] - $watermarkHeight - 10;

    // creating a cut resource
    $cut = imagecreatetruecolor($watermarkWidth, $watermarkHeight);
    imagefill($cut,0,0,0x7fff0000);

    // copying that section of the background to the cut
    imagecopy($cut, $img, 0, 0, $destX, $destY, $watermarkWidth, $watermarkHeight);

    // placing the watermark now
    imagecopy($cut, $watermark, 0, 0, 0, 0, $watermarkWidth, $watermarkHeight);

    // merging both of the images
    imagecopymerge($img, $cut, $destX, $destY, 0, 0, $watermarkWidth, $watermarkHeight, 100);

    imagedestroy($watermark);

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-12 12:08:26

我通过将图像从Gif转换为Png,然后添加水印来解决这个问题。

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

https://stackoverflow.com/questions/49233046

复制
相关文章

相似问题

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