前言
给图片添加水印,是一个很常见的需求。但是该需求的实现却不简单。
问题
通常添加文字水印,是gd库的imagefttext方法。但是尝试之后,发现图片变成静态了。不符合需求。
利用搜索引擎,查询无数,发现gd扩展不合适解决这个问题。此时需要使用一个新的扩展
imagick
该扩展除了在gif图片过大的情况,存在速度问题,其他情况下表现良好。
解决
在尝试了很多教程,失败无数次。于是忍痛去阅读英文文档,写出正确的代码。
代码如下:
$im = new Imagick("2.gif"); $draw = new ImagickDraw(); $draw->setFont('LOKICOLA.TTF'); $draw->setFontSize( 50 ); $draw->setFillColor(new ImagickPixel("red")); $text = "wuwenfu"; foreach ($im as $frame) { $frame->annotateImage($draw, 100, 120, 0, $text); } //写入到文件 //$im->writeImages("2_small.gif", true); //输出到浏览器。 header( "Content-Type: image/gif" ); echo $im->getImagesBlob();
原图:
水印:

没有帐号? 现在注册.