如何让 graphicsmagick 在 BMP 文件中画一条线?

How do I get graphicsmagick to draw a line inside a BMP file?

我已经安装了 GraphicsMagick 并且 gm 命令在 shell 中响应。 我有一个 400 x 400 白色像素的 BMP 文件。 我试过这个

gm convert -draw 'line 10,10 200,200' blank_canvas.bmp

但我得到的只是

gm convert unable to open file (10,10)[No such file or directory]

我也试过了

gm convert blank_canvas.bmp -draw 'line 10,10 200,200'

得到了

gm convert: Non-conforming drawing primitive definition (line) [No such file or directory].

当我们这样做的时候,我如何让它绘制大量线条,从文本文件输入数据?

制作白色 BMP:

gm convert -size 400x400 xc:white white.bmp

在上面画一条红线,注意指定输入和输出图像:

gm convert white.bmp -fill red -draw 'line 10,10 200,200' result.bmp

如果因为要完成操作而不想指定输入和输出文件 "in-place",请使用 mogrify

gm mogrify -fill red -draw 'line 10,10 200,200' white.bmp

如果您有数百张图像要应用绘图,您也可以使用 mogrify,如下所示:

gm mogrify -fill red -draw 'line 10,10 200,200' *.bmp

小心 - mogrify 是一个 非常强大的 命令,可以非常快速地不可逆地改变大量图像。


如果你想做很多行,全部列在一个文本文件中,用这样的格式制作并保存为 draw.txt:

fill red
line 10,10,200,200
fill blue
line 200,10,10,200
fill lime
line 80,120,300,400

而运行是这样的:

gm convert white.bmp -draw @draw.txt result.bmp


或者,您可以使用这样的 MVG 文件:

viewbox 0 0 400 400
fill white rectangle 0,0 400,400
fill red line 10,10,200,200
fill blue line 200,10,10,200
fill lime line 80,120,300,400
fill magenta circle 250,250 250,400

而运行是这样的:

gm convert mvg:lines.mvg result.png

或者,如果您有生成以下行的程序,则像这样:

cat lines.mvg | gm convert mvg:- result.png

关键字:ImageMagick、GraphicsMagick、画线、多线、多形状、MVG。