php imagick gif,利用php的imagick给gif图片加水印

尝试多次直接用GD库给gif图片加水印均未达到理想效果后,决定用imagick扩展给gif图片加水印,虽然帧数太多的情况下速度不太给力外,效果蛮理想。

开启imagick扩展,可参考http://www.vpser.net/manage/lnmp-lnmpa-imagemagick-install-tutorial.html

果断先上图:

3258100009.gif

2938938773.gif

2468532255.gif

再上代码:$image_name = '01351346.gif';

//$image_name = 'Left_spinning_dancer.gif';

//$image_name = 'gifmerge.gif';

function createTextImagickDraw($fontSize=12, $fillColor='', $underColor='', $font='msyh.ttf'){

$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){

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

for ($i=0; $isetImageIndex($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://kller.cn');

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

$thisimage->drawImage(createWaterImagickDraw('f.jpg'));

$animation->addImage($thisimage);

$animation->setImageDelay( $delay );

}

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

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

echo $animation->getImagesBlob();

附件:(你们懂的)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值