簡體   English   中英

在透明gif上放置水印

[英]Placing a watermark on transparent gif

我正在嘗試制作圖像上傳器,除了在透明gif上放置水印外,其他所有功能都運行良好。 gif本身保持透明,但是由於某種原因,放置在gif透明背景上的水印部分變為紅色背景,我正努力尋找原因。 有什么建議么?

在此處輸入圖片說明

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);

}

我通過將圖像從Gif轉換為Png,然后添加水印解決了這一問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM