【问题标题】:How do I get graphicsmagick to draw a line inside a BMP file?如何让 graphicsmagick 在 BMP 文件中画一条线?
【发布时间】:2020-09-08 16:13:46
【问题描述】:

我已经安装了 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].

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

【问题讨论】:

    标签: graphicsmagick


    【解决方案1】:

    制作一个白色的 BMP:

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

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

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

    如果您不想指定输入和输出文件,因为您希望操作完成“就地”,请使用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。

    【讨论】:

    • 我猜文件 draw.txt 也可以用于 imagemagick,对吧?
    • 是的,几乎整个答案同样适用于 ImageMagick。
    猜你喜欢
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 2012-11-12
    • 2012-05-19
    相关资源
    最近更新 更多