最近要用ImageMagick做个水印效果,先做一个简单版本,往图片里添加文字注释
安装ImageMagick和ghostscript(不装会报错:sh:gs:command not found)
如果是linux -- CentOS的系统,只需要yum install ghostscript,yum install imagemagick即可
当然,下载源码包安装很可以,而且可以安装最新版,例如ImageMagick已经6.3.9-6了
装完在命令行下convert --version看看其版本,并且验证是否安装成功,然后取张图片试试效果:
convert -rotate 90 xxx.jpg out.jpg
是不是旋转了?
往图片上输入文字:
convert -font helvetica -fill white -pointsize 13 \
-draw 'text 5,195 "Floriade 2002, Canberra, Australia"' \
floriade.jpg comment.jpg
意思是用helvetica字体,white颜色,13字体大小,在图片的width5,height195初开始写上双引号中的句子。
如果要写在正中心呢?有选项gravity,设置为Center就是正中心啦,设为SouthWest就是左下角,非常方便。
以上是命令行,安装了Perl的Image::Magick模块之后,就可以用Perl来调用ImageMagick了,然后问题就是:如何写入中文?ImageMagick只支持utf8编码这是文档上就写明的,不过我测试如下代码:
#!/usr/bin/perl -w
use strict;
use Image::Magick;
use Image::Size;
my $src_path = "tutu.jpg";
my $store_path = "tutu_comment.jpg";
my ($width,$height) = imgsize($src_path);
my $pointsize = int($height * 0.07);
my $text = '中文在此!';
my $rh_annotate = {
text => $text,
style => 'Normal',
pointsize => $pointsize,
fill => 'white',
gravity => 'SouthWest',
};
my $image = Image::Magick->new();
$image->Read($src_path);
$image->Annotate(%$rh_annotate);
$image->Write($store_path);
undef $image;
居然是乱码效果!!我用的是EmEdit编辑器,该文件是保存为utf-8未签名格式的,但就是乱码!
几经测试,终于发现。。。需要一个中文字体文件的支持。
在windows上可以找到很多,c:\windows\fonts\目录下,仿宋、黑体、隶书等等都可以,这种ttf的文件copy到linux上一样有用,只需要指定font的位置即可
修改代码如下:
my $rh_annotate = {
text => $text,
font => 'fonts/simfang.ttf',
style => 'Normal',
pointsize => $pointsize,
fill => 'white',
gravity => 'SouthWest',
encoding => 'UTF-8',
};
OK!测试通过!写出了仿宋字体的中文。
另外,如果你用的是UltraEdit,EditPlus等不支持编码格式的编辑器,那默认是gb2312的编码,需要转码才能写中文:
use Encode;
$text = encode('utf8',decode('gbk',$text));
这样就可以了,具体转码问题这里不多说了,详见Perl的Encode模块。
另外再提供给大家一些ImageMagick的经典文档:
http://www.imagemagick.org/Usage/text/
http://www.imagemagick.org/script/perl-magick.php
http://bbs.zdnet.com.cn/thread-37859-1-1.html
呵呵,希望对大家有帮助,少走歪路(我自己在写中文问题上堵了很久,一直以为是编码问题,太傻了)
分享到:
相关推荐
文档中列举了用ImageMagick命令行处理图片的例子
ImageMagick是免费软件,可以即用型二进制分发形式提供,也可以作为源代码提供,您可以在开放应用程序和专有应用程序中使用,复制,修改和分发它们。它是在派生的Apache 2.0 许可下分发的。 ImageMagick利用多个...
ImageMagick命令使用文档
ImageMagick是一个免费的创建、编辑、...ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布,它遵守GPL许可协议,可以运行于大多数的操作系统,ImageMagick的大多数功能的使用都来源于命令行工具。
Java图片处理解决方案:ImageMagick快速入门教程.docx
1、ImageMagick跨平台图片处理框架 2、ImageMagick已打包为iOS静态库 3、项目中如何导入ImageMagick框架 4、一句代码调用压缩函数,代码实例如下: [[WZMQualityHandle shareHandle] compressImage:path quality:0.5...
NULL 博文链接:https://jh108020.iteye.com/blog/1767956
java结合imageMagick实现图片渲染合成编辑,源码附送安装文件学习文档。
使用ImageMagick给图片在指定位置加文字,可以实现P图软件一样的效果。加上for循环语句,可以实现批量给图片加文字。 关于ImageMagick,是一款免费的命令行图像处理软件,支持windows,linux,Mac OS多平台,下载...
ImageMagick是一个免费的创建、编辑、...ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布,它遵守GPL许可协议,可以运行于大多数的操作系统,ImageMagick的大多数功能的使用都来源于命令行工具。
目前最流行的图片压缩工具,C语言开发,不占用内存。
ImageMagick 强大的图片转换资源,对于png jpg gif tiff格式图片的处理尤为方便,支持嵌入式产品开发
ImageMagick是一个免费的创建、编辑、...ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布,它遵守GPL许可协议,可以运行于大多数的操作系统,ImageMagick的大多数功能的使用都来源于命令行工具。
通过Image Magick/mogrify/GIMP/exiftool等工具来"convert"或"mogrify"图片,删除png图片中内嵌的iCCP profile sRGB: Image Magick使用举例: 删除单个png文件内的profile: % convert -strip <input filename> ...
Version: ImageMagick 6.7.6-7 2012-04-20 Q16 http://www.imagemagick.org Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC Features: OpenMP Usage: convert.exe [options ...] file [ [options ......
ImageMagick是一个免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。...
imageMagick与Java 实例,解决java处理图片性能问题
图片处理程序ImageMagick,安装后可以解决python生成动态图表时报错找不到imagemagick
ImageMagick