• 使用ImageMagicK给图片加水印
    时间:2014-06-10   作者:佚名   出处:互联网

    最近有个项目需要给图片增加水印,新增的图片还好说,老的图片就得单独处理了。下面就了解一下使用ImageMagic给图片增加不同的水印。

    安装

    在 CentOS 下安装:

    # yum install ImageMagick

    在 Ubuntu 下安装:

    $ sudo apt-get install imagemagick

    水印处理


    图片水印处理

    假设把名为logo.gif的水印图标添加在原始图片(src.jpg)右下角,且水印的下边缘距原始图片10像素、右边缘距原始图片5像素。使用如下命令即可:

    convert src.jpg logo.gif -gravity southeast -geometry +5+10 -composite dest.jpg

    文字水印处理

    如果不含中文字符,可以直接通过convert draw text的方式将文字添加到图片,否则就需要使用其它的办法。命令行中不能包括中文字符,但是能通过读取文件的方式来操作,即先把中文信息保存文本文件中。注意:文本文件的编码最好用UTF-8,同时也需要选取一个支持中文的字体。直接把文本文本中的信息输出到图片上使用命令mogrify,不过也可以使用convert命令把文本文件中的信息生成一个图片,然后再把图片合成到原始图片中。下面分别介绍这几种方法。

    不含中文字符:例如把www.kaiyuanba.cn作为水印加上图片上,命令如下

    convert src.jpg -gravity southeast -fill black -pointsize 16 -draw "text 5,5 'http://www.kaiyuanba.cn'" dest-c.jpg

    mogrify -pointsize 16 -fill black -weight bolder -gravity southeast -annotate +5+5 "http://www.kaiyuanba.cn" src.jpg

    说明:上述两条命令达到同样的结果,但是第一次命令可以保留原始图片,第二条是直接在原始图片上打上水印。

    存在中文的情况:假设存有信息的文件叫t.txt,字体文件是msyh.ttf。

    方法1:

    //把文件t.txt中的信息生成图片txt.png, -transparent white让图片的背景透明,-size x30设置图片的高度
    convert -transparent white -font msyh.ttf -fill black -pointsize 24 label:@t.txt txt.png
    //把txt.png合成到src.jpg上
    convert src.jpg txt.png -gravity southeast -geometry +10+5 -composite dest.jpg

    方法2:

    convert src.jpg -transparent white -font msyh.ttf -fill black -pointsize 24 -size x30 label:@t.txt -gravity southeast -geometry +10+5 -composite dest.jpg

    方法3:

    mogrify -font msyh.ttf -pointsize 24 -fill black -weight bolder -gravity southeast -annotate +20+20 @"t.txt" src.jpg

    方法4:

    composite -gravity northeast -dissolve 15 watermark.jpg vpsee.jpg vpsee.jpg

    说明:上述第一、二种方法都有瑕疵,第二种背景不能变成透明,第一种虽然生成的图片可以透明,但是合成到原始图上效果不是很理想,第三种是完全透明的,所以推进用第三种方式来操作。

    网友留言/评论

    我要留言/评论

    相关文章

    nginx ssl的安装和配置:前段时间搞了一下apache的ssl,今天有时间把nginx的也搞了一下。关于证书的生成在这儿就不多说了了,请参考前面写过的openssl建立证书,非常详细配置ssl+apache,本文用的证书就是前段时间用openssl生成的。
    利用SSH隧道技术穿越你的企业级防火墙:SSH也就是Secure Shell的意思,通过它能在用户和主机之间建立一条安全的通道,所以就很有用。隧道只是其中一种。如果你有一台机器的SSH账号,而这台机器相对方便些,就可以用SSH从本机挖条隧道到这台机器,然后再通过这台机器去浏览WWW,还是很方便的。
    Squid,Nginx,Lighttpd反向代理的区别:反向代理从传输上分可以分为2种: 1:同步模式(apache-mod_proxy和squid) 2:异步模式(lighttpd 和 nginx)
    大型开源日志系统比较:日志对于系统的安全来说非常重要,它记录了系统每天发生的各种各样的事情,用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。日志主要的功能是审计和监测。它还可以实时地监测系统状态,监测和追踪侵入者。 本文将介绍几个开源系统并做比较。
    扩充分布式系统Hadoop的强大工具组合:Apache基金会规划的Hadoop体系中还有许多牛B的周边方案,如可支持SQL语法的Hive,不懂Java也能撰写MapReduce的Pig,这些都是开发者不能错过的Hadoop相关方案哦。
    Redis学习之主从复制介绍:redis主从复制配置和使用都非常简单。通过主从复制可以允许多个slave server拥有和master server相同的数据库副本。
    Redis学习之Sorted-Sets数据类型介绍:redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。本文将介绍Redis之Sorted-Sets数据类型。
    使用Memcache存储一些注意点:Memcache使用了Slab Allocator的内存分配机制:按照预先规定的大小,将分配的内存分割成特定长度的块,以完全解决内存碎片问题
    浅谈Squid在图片存储架构中的应用:将近快一个月没写文章了,太懒散了,今天振作了一下,写了篇关于Squid的文章,Squid作为分布式代理缓存服务器真的非常的棒,希望本文对你有帮助。