php gif添加水印,php利用imagick扩展给gif静/动态图片加水印

首先就得要打开imagick扩展,网上上有教程,windows下记得imagick版本要对应,虽然imagick在帧数多的情况下比较慢,但是效果不错。

记得不是当前目录 要写路径,包括字体也是一样的,代码如下:

$image_name = 'img.gif'; //名字随便写

function createTextImagickDraw($fontSize = 12, $fillColor = '', $underColor = '', $font = 'simsun.ttc') {

$draw = new ImagickDraw();

$draw - >setFont($font);

$draw - >setFontSize($fontSize);

//$draw->setGravity(Imagick::GRAVITY_SOUTHEAST);//设置水印位置

if (!empty($underColor)) $draw - >setTextUnderColor(new ImagickPixel($underColor));

if (!empty($fillColor)) $draw - >setFillColor(new ImagickPixel($fillColor));

return $draw;

}

function createWaterImagickDraw($waterImg = 'water.png', $x = 10, $y = 85, $width = 16, $height = 16) {//这里根据水印大小设置 最好x y能自己先检测判断位置

$water = new Imagick($waterImg);

//$second->setImageOpacity (0.4);//设置透明度

$draw = new ImagickDraw();

//$draw->setGravity(Imagick::GRAVITY_CENTER);//设置位置

$draw - >composite($water - >getImageCompose(), $x, $y, $width, $height, $water);

return $draw;

}

$image = new Imagick($image_name);

$animation = new Imagick();

$animation - >setFormat("gif");

$image = $image - >coalesceImages();

$unitl = $image - >getNumberImages();

$drawImg=createWaterImagickDraw('warter.png');

for ($i = 0; $i < $unitl; $i++) {

$image - >setImageIndex($i);

$thisimage = new Imagick();

$thisimage - >readImageBlob($image);

$delay = $thisimage - >getImageDelay();

$thisimage - >annotateImage(createTextImagickDraw(12, 'red'), 30, 100, 0, '阿维卡');//文字水印

$thisimage - >annotateImage(createTextImagickDraw(12, 'green'), 10, 120, 0, 'http://xyxgo.com');

$thisimage - >annotateImage(createTextImagickDraw(12, 'blue'), 10, 140, 0, 'http://www.eduyo.com');

$thisimage - >drawImage($drawImg);//图片水印

$animation - >addImage($thisimage);

$animation - >setImageDelay($delay);

}

$animation - >writeImages('new/'.$image_name, true);

header("Content-Type: image/gif");

echo $animation - >getImagesBlob();

(责任编辑:ken)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值