黄聪:利用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动画   。

时间: 2024-12-27 16:32:03

黄聪:利用ImageMagicK给图片加水印的相关文章

利用PHP为图片加水印

1.为图片加风格字体 <?php header('Content-type:image/jpeg');//告诉服务器用JPEG图像格式输出 $img=imagecreatefromjpeg('images/girl.jpg');//建立背景图像 $color=imagecolorallocate($img,100,100,100);//分配给字体的颜色 $width=imagesx($img);//输出背景图像的总宽度 $height=imagesy($img);//输出背景图像的总长度 $po

使用imageMagick 制作圆角矩形和图片加水印

制作圆角矩形好图片水印都是图片合成的操作 composite -gravity southeast mask175.png  src.jpg  dest.jpg -gravity southeast 指叠加位置为右下角 如果要求在正中间,参数为center 如果要求在垂直据顶部.水平居中(正北方向),参数为north imagemagick官网:http://www.imagemagick.org/script/composite.php 使用imageMagick 制作圆角矩形和图片加水印

thinkphp 3.2.3整合ueditor 1.4,给上传的图片加水印

今天分享一下thinkphp 3.2.3整合ueditor 1.4,给上传的图片加水印.博主是新手,在这里卡住了很久(>_<) thinkphp 3.2.3整合ueditor 1.4 下载地址:https://github.com/Nintendov/Ueditor-thinkphp 下载下来,看着配置就可以了. 下面就是给上传图片加水印: (在做这步前,请确保ueditor已经正常工作) 我的工程目录如下: fonts里面的fz.fft为水印字体 images里面的logo.png为水印图片

java 图片加水印,设置透明度。说明很详细

package com.yidao.common; import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.Out

文件上传,图片加水印

文件上传: 所用控件:FileUpload 使用时的思路: 1.判断用户是否选中了文件 FileUpload.FileName获取选中的文件名,判断长度,如果长度大于零就代表已经选择了文件 JS端:通过ID获取控件,然后控件的value获取选中的文件名 2.将文件保存到服务器上 FileUpload.SaveAs("绝对路径"); 3.获得绝对路径 先编写相对路径:比如"UpLoads/abc.txt" 再把路径映射成绝对路径:Server.MapPath(&quo

iOS图片加水印效果的实现并保存至相冊

图片加水印效果的实现并保存至相冊 实现效果如图: project下载:githubproject下载链接 代码: - (void)viewDidLoad { [super viewDidLoad]; UIImage *image = [UIImage imageNamed:@"pushu.jpg"]; UIImage *waterImage = [self waterMarkImage:image withText:@"朴树水印測试"]; UIImageWriteT

PHP给图片加水印具体实现

给图片加水印实现方法如下: 1 class Mark 2 { 3 public function __construct() 4 { 5 6 } 7 8 /** 9 * 加水印 10 * @param file $srcImg 要加水印的图片 11 * @param file $waterImg 水印图片 12 * @param integer $position 水印图片放置位置 1:左上,2:右上,3:居中,4:左下,5:右下 13 * @param integer $alpha 水印图片透

java 图片加水印,设置透明度。说明非常具体

package com.yidao.common; import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.Out

图片加水印 图片验证码

图片加水印 1   获取这张图片 System.Drawing.Image img = System.Drawing.Image.FromStream(FileUpload1.FileContent); 2 给图片加水印 Graphics g = Graphics.FromImage(img); string s = "WWW.ITNBA.COM";         s 给图片加的水印文字 Font f = new Font("微软雅黑", 30); Brush b