【问题标题】:PHP GD - Watermark image with opacityPHP GD - 不透明的水印图像
【发布时间】:2023-03-18 12:52:01
【问题描述】:

我正在尝试使用 PHP 和 GD 图像库为图像添加水印。我可以使用正确的不透明度设置应用我指定的水印。

问题是我的水印本身有透明背景。当我尝试将此水印应用于图像时,我得到黑色背景。

要应用水印的图像是 jpeg。这可能是问题吗?如果是这样,我将如何将 jpeg 转换为支持透明度的格式,应用水印,然后将其转换回来?

这是我目前拥有的关键代码。

// Determine image size and type
$size = getimagesize($this->image_path);
$size_x = $size[0];
$size_y = $size[1];
$image_type = $size[2]; // This is always a JPEG

// load source image
$image = $this->ImageCreateFromType($image_type, $this->image_path);

// Determine watermark size and type
$wsize = getimagesize($watermark_path);
$watermark_x = $wsize[0];
$watermark_y = $wsize[1];
$watermark_type = $wsize[2]; // This is typically a PNG

// load watermark
$watermark = $this->ImageCreateFromType($watermark_type, $watermark_path);

$dest_x = $this->setX($size_x, $watermark_x);
$dest_y = $this->setY($size_y, $watermark_y);

imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_x, $watermark_y, $this->opacity);

虽然不是很相关,但这里是 ImageCreateFromType 函数的代码

function ImageCreateFromType($type,$filename) {
 $im = null;
 switch ($type) {
   case 1:
     $im = ImageCreateFromGif($filename);
     break;
   case 2:
     $im = ImageCreateFromJpeg($filename);
     break;
   case 3:
     $im = ImageCreateFromPNG($filename);
     imagealphablending($im, true);
     imagesavealpha($im, true);
     break;
  }
  return $im;
}

【问题讨论】:

    标签: php gd opacity


    【解决方案1】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-30
      • 1970-01-01
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多