多语言展示
当前在线:1375今日阅读:195今日分享:14

使用ImageMagick添加图形、文字

ImageMagick可以利用命令方便地在图形中添加图形、水印、文字,它可以与编程语言结合起来,可以批量处理图片,一些网站经常利用它来处理图片。0ImageMagick缩放图片
工具/原料
1

终端

2

Imagemagick

方法/步骤
1

我主要以系统自带的壁纸作为范例,这是原图。在开始修改之前,我们得了解一些gravity参数,它主要用于确定坐标位置。默认情况下,以左上角为原点,向右为X轴正方向,向下为Y轴正方向。它有这些参数:NorthWest、North、NorthEast、West、Center、East、SouthWest、South和SouthEast,对应的坐标轴方向也不同,一般正方向都指向图形画面。

2

先是point的用法。它是用于修改一个像素,所以上图的效果不明显。我先创建一个像素大小为10x6的图形,背景色为绿色,然后再利用draw命令绘制一个像素,颜色为黑色,坐标以West为原点,坐标为(3,2),然后再将图形简单地放大到1000x600的像素,生成名为pix.jpg的图片。命令如下:convert -size 10x6 xc:green -fill black -gravity West -draw 'point 3,2' -scale 1000x600 pix.jpgdraw选项后的参数要用单引号与其它命令隔开。这是它的最终效果。

3

绘制直线(line)。它的参数格式为“x0,y0 x1,y1”,分别是起点和终点的x轴和y轴坐标。线和随后的其他图形都可以加入参数-stroke和-strokewidth,分别设定边框颜色和宽度。执行命令:convert -stroke red -strokewidth 20 -draw 'line 0,400,2000,600' paisaje.jpg paisaje_line.jpg生成的图形如下:

4

绘制矩形(rectangle)。它的参数格式为“x0,y0 x1,y1”,指的是左上角和右下角点的坐标。填充可以用-fill选项,默认填充黑色,要想设置什么都不填充,后面可接参数none。执行命令:convert -fill none -stroke '#039458' -strokewidth 20 -draw 'rectangle 400,400,2000,800' paisaje.jpg paisaje_rectangle.jpg生成的图片如下:

5

绘制圆角矩形(roundRectangle)。其参数为“x0,y0 x1,y1 wc,hc”,前边的参数与矩形的参数含义相同,指的是原矩形关键点的坐标,为了形成圆角,需要将直角矩形的“挖去”,后面的两参数则指在横向和竖向挖去的大小。执行命令:convert -fill none -stroke '#039458' -strokewidth 20 -draw 'roundRectangle 400,400,2000,800,100,200' paisaje.jpg paisaje_roundRectangle.jpg生成的图片如下:

6

绘制弧(arc)。其参数为“x0,y0 x1,y1 a0,a1”,前四个参数指的是设定完整的弧外接的矩形的坐标,后面的两个参数设定起始和结束的角度(顺时针方向)。执行命令:convert -fill none -stroke '#039458' -strokewidth 20 -draw 'arc 400,400,2000,800,60,270' paisaje.jpg paisaje_arc.jpg生成的图形如下:

7

绘制椭圆(ellipse)。其参数为x0,y0 rx,ry a0,a1,第一组参数代表中心的坐标,中间的参数则分别表示横轴和纵轴的长度,最后的参数则表示角度范围,与弧的参数类似。执行命令:convert -fill skyblue -stroke '#039458' -strokewidth 20 -draw 'ellipse 1400,700 1000,600 60,270' paisaje.jpg paisaje_ellipse.jpg生成的图形如下:

8

绘制圆(circle)。其参数为x0,y0 x1,y1,第一组是圆心坐标,第二组是圆周上任意一点坐标。执行命令:convert -fill none -stroke '#039458' -strokewidth 20 -draw 'circle 1400,700 1400,1000' paisaje.jpg paisaje_circle.jpg生成的图片如下:

9

绘制折线(polyline)。其参数为“x0,y0  ...  xn,yn”,每组参数是依次各个点的坐标。convert -fill white -stroke '#039458' -strokewidth 20 -draw 'polyline 800,200 400,1000 1800,200 1400,800' paisaje.jpg paisaje_polyline.jpg生成的图片如下:

10

绘制多边形(polygon)。其参数为“x0,y0  ...  xn,yn”和折线的参数差不多,依次是各个点的坐标。执行命令:convert -fill white -stroke '#039458' -strokewidth 20 -draw 'polygon 1200,400 1800,400 1500,900' paisaje.jpg paisaje_polygon.jpg生成的图片如下:

11

绘制贝塞尔曲线(bezier)。其参数为“x0,y0  ...  xn,yn”,首末两组坐标是线条的起点和终点的坐标,其余点的坐标均是控制点的坐标。执行命令:convert -fill none -stroke '#039458' -strokewidth 20 -draw 'bezier 1400,1000 200,500 900,100 900,900' paisaje.jpg paisaje_bezier.jpg生成的图片如下:

12

添加文字。有时我们得确定字体。我们得先使用命令:identify -list fontFont:那栏就是字体名称。

13

比如,我要在正中插入“Lawliet”,-font选项设置字体,因为一些字体名称中有空格等特殊字符,建议用引号将字体名称包含,此处的字体是一种哥特字体。-gravity设置坐标原点位于正中,-pointsize设置了字体大小,-draw的参数中“text”声明绘制字体,后面的一组数字参数设置坐标,后面要输出的文字则被引号包含。命令如下:convert -fill black -stroke red -font 'MathJax_Fraktur-Regular' -pointsize 200 -gravity Center -draw 'text 0,0 'Lawliet'' paisaje.jpg paisaje_font.jpg生成的图片如下:

14

中文则要确保字体支持中文,否则输出的会产生乱码或是问号。比如,我要输出“苟利国家生死以”,命令如下:convert -fill black -stroke red -font '思源宋体-CN' -pointsize 200 -gravity Center -draw 'text 0,0 '苟利国家生死以'' paisaje.jpg paisaje_font.jpg生成效果如下:

15

添加图片(image)。其参数为“operator x0,y0 w,h filename”,第一个参数控制插入方式,第一组参数控制图片的坐标位置,第二组则控制插入时的宽和高,最后一个参数则控制图片的路径。命令如下:convert -gravity Center -draw 'image over 100,100 400,400 'Gnomelogo.svg'' paisaje.jpg paisaje_image.jpg这是最终效果。

注意事项

处理好其中的空格等特殊字符,不要让它与命令行固有的语法起冲突。

推荐信息