zoukankan      html  css  js  c++  java
  • 黄聪:利用ImageMagicK给图片加水印

    1 图片水印处理

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

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

    -gravity southeast 指叠加位置为右下角

    如果要求在正中间,参数为center

    如果要求在垂直据顶部、水平居中(正北方向),参数为north

    imagemagick官网:http://www.imagemagick.org/script/composite.php

    2 文字水印处理

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

    • 不含中文字符:例如把www.cnblogs.com作为水印加上图片上,命令如下
    •  convert src.jpg -gravity southeast -fill black -pointsize 16 -draw "text 5,5 'http://www.cnblogs.com/dying'" dest-c.jpg
      
       mogrify -pointsize 16 -fill black -weight bolder -gravity southeast -annotate +5+5 "http://www.cnblogs.com/dying" src.jpg

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

    • 存在中文的情况:假设存有信息的文件叫t.txt,字体文件是msyh.ttf
    • 复制代码
      方法1:
      //把文件t.txt中的信息生成图片txt.png, -transparent white让图片的背景透明,-size x30设置图片的高度,-pointsize设置字体大小,-font设置字体 
      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
      //southeast 图片的东南方向 上北下南左西右东
      方法3:
      mogrify -font msyh.ttf -pointsize 24 -fill white -weight bolder -gravity southeast -annotate +20+20 @"t.txt" src.jpg
      复制代码

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

        我个人以为上面的方法3对gif添加中文水印非常的好用,推荐这个,不过一定要对原图像进行备份,另外一篇文章:ubuntu动态截图,制作GIF动画   。

  • 相关阅读:
    Validation failed for one or more entities. See 'EntityValidationErrors' property for more details
    Visual Studio断点调试, 无法监视变量, 提示无法计算表达式
    ASP.NET MVC中MaxLength特性设置无效
    项目从.NET 4.5迁移到.NET 4.0遇到的问题
    发布网站时应该把debug设置false
    什么时候用var关键字
    扩展方法略好于帮助方法
    在基类构造器中调用虚方法需谨慎
    ASP.NET MVC中商品模块小样
    ASP.NET MVC中实现属性和属性值的组合,即笛卡尔乘积02, 在界面实现
  • 原文地址:https://www.cnblogs.com/huangcong/p/7224020.html
Copyright © 2011-2022 走看看