[英]PHP GD - Watermark image with opacity
我正在尝试使用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;
}
阅读有关imagecolortransparent()函数的信息: http : //php.net/manual/zh/function.imagecolortransparent.php
您可能还想看一下这个问题: 使用PHP的GDlib imagecopy重新采样时,能否保留PNG图像的透明度?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.