使用Imagemagick convert生成文字图片

来源:互联网 发布:新加坡房价2017 知乎 编辑:程序博客网 时间:2024/04/30 15:32

convert -pointsize 10 -fonts xxx.ttf label:test test.png

 

xxx.ttf用一个汉字字体文件替换,可以到windows下找一个

 

如果文本中有汉字如何处理,根据imagemagick的文档,可以如下处理,

convert -pointsize 10 -fonts xxx.ttf label:@test.txt test.png

 

注意:label: 后面变成了@test.txt,意思就是从test.txt读取内容生成图片,要求test.txt必须是utf8编码的。

 

但实际上,我发现不写文件也可以,如

convert -pointsize 10 -fonts xxx.ttf label:@测试 test.png

但我想这一定和系统的语言环境有关

在我的环境下,

echo $LANG

结果是 zh_CN.UTF-8

 

如果你设定的是 GBK, GB18030等,估计就不行了

 

还有一个问题是,如果文本中有空格、特别的一些字符, 这样做就不行了,格式有错误了。所以,还是用文件的方式比较安全可靠。

 

奇怪的问题出现了,

不同版本的imagemagick生成的图片高度不一样,

比如:centos5.3自带的版本是6.2.8 , 用两种方式生成的图片高度是一样的。

ubuntu自带的版本6.3.7和新编译的6.5.6-1 , 用文件的方式生成的图片比直接生成的高很多。

经过一段时间的摸索,我感觉是多了一行空行,也许这是一个bug, 在读取文件内容是多加了一个回行。

 

可以使用以下方式把空白截掉一点,

convert -pointsize 10 -size x15 -fonts xxx.ttf label:@test.txt test.png

就是把图片的高限定为15

但要注意这个方式在6.3.7下的效果不是这样的,它把图片高压缩到15个像素,而不是截取15个像素

 

所以,convert的使用一定要注意在不同环境下的测试,如果不注意,就会出现开发时是好的,部署后就不一样了。

最好是选定一个版本,开发部署均使用这个版本,保证效果是一致的。

原创粉丝点击