【发布时间】:2014-03-18 14:51:19
【问题描述】:
我需要添加透明水印(最终图像的透明度 - 80%)。我创建了这个函数来处理它:
function ImageAddWatermark($im, $stamp, $onLeft, $onTop, $margin){
// $stamp = imagecreatformpng(...) -> GD resource?
// not important part - it calculates position of watermark
if($onLeft){
$orgX = $margin;
} else {
$orgX = imagesx($im)-$margin-imagesx($stamp);
}
if($onTop){
$orgY = $margin;
}else {
$orgY = imagesy($im)-$margin-imagesy($stamp);
}
imagecopymerge($im, $stamp, $orgX, $orgY, 0, 0, imagesx($stamp), imagesy($stamp), 50);
return $im;
}
函数结果:
但是 imagecopymerge 返回黑色背景而不是透明。我什至听到了一些意见,imagecopymerge 并不完全适合创建透明水印...
所以问题是:“如何在 jpeg 照片中添加透明水印(使用 alpha?)?”我怎样才能摆脱那个黑色的背景?(在原始 PNG 文件中是透明的)
【问题讨论】:
-
在调用这个函数之前
$stamp是什么?它是GD资源吗?你是怎么加载的? -
@cmorrissey 如果 GD 资源是“imagecreatefrompng(...)”,当然我称之为
-
拨打
imagecreatefrompng(...)后添加imagealphablending($stamp, true); -
重复也不起作用..
标签: php