美文网首页
php的imagick扩展给gif添加文字水印

php的imagick扩展给gif添加文字水印

作者: 有时右逝 | 来源:发表于2018-08-20 23:36 被阅读0次

    前言

    给图片添加水印,是一个很常见的需求。但是该需求的实现却不简单。

    问题

    最近前同事找到我,给我提了一个问题。他的业务需要去实现 给动态gif图片添加文字水印。他难以解决。

    原本我以为很简单,之前基于php的gd扩展,写过动态验证码。就是产生的gif。于是满口答应帮忙解决。没想到最终掉坑,该问题耗费了1个晚上。

    通常添加文字水印,是gd库的imagefttext方法。但是尝试之后,发现图片变成静态了。不符合需求。

    利用搜索引擎,查询无数,发现gd扩展不合适解决这个问题。此时需要使用一个新的扩展
    imagick

    该扩展除了在gif图片过大的情况,存在速度问题,其他情况下表现良好。

    但是该扩展存在2个难题。

    • 安装困难。教程较少,后续补充安装教程。
    • 文档缺乏。基本上没有中文文档,错误的实例很多。

    解决

    在尝试了很多教程,失败无数次。于是忍痛去阅读英文文档,写出正确的代码。

    代码如下:

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

    原图(简书限制了动图)


    image.png

    水印


    image.png

    代码下载地址:csdn下载地址

    相关文章

      网友评论

          本文标题:php的imagick扩展给gif添加文字水印

          本文链接:https://www.haomeiwen.com/subject/jnmriftx.html