如何通过命令行在图片的中心绘制带有文本的图片?

Vla*_*lov 8 command-line graphics inkscape imagemagick

我需要通过命令行在中心绘制带有文本的图像以进一步放入视频。黑色背景上的简单黄色文本。

我试过FFmpeg方法:

ffmpeg -loop 1 -r 1 -i b.png -b:v 1M -vf "scale=320:240, drawtext=fontfile=/usr/share/fonts/truetype/DejaVuSans.ttf: text='Test Text'" -vcodec mpeg4 -acodec aac preroll.mp4
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

[AVFilterGraph @ 0xf56020] No such filter: 'drawtext'
Run Code Online (Sandbox Code Playgroud)

我尝试安装ivtools并尝试过drawtoolidraw这显然适用于桌面环境。

如何以编程方式在 Ubuntu 中创建带有文本的简单图像?

αғs*_*нιη 19

这个命令怎么样:

convert -background black -size 800x480 -fill "#ff0080"  -pointsize 72 -gravity center label:'Ask Ubuntu' output.png
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

通过使用上面的命令,您可以创建一个空的 .png 图像,其背景颜色为黑色。

-background color
   设置背景颜色。
   默认背景颜色(如果没有指定或在图像中找到)是白色。

创建的图像大小将为 800x480( width[xheight])。

-size width[xheight][+offset]
   设置原始图像的宽度和高度。

-fill color
   填充图形基元时使用的颜色。

此选项接受颜色名称、十六进制颜色或数字 RGB、RGBA、HSL、HSLA、CMYK 或 CMYKA 规范。有关如何正确指定颜色参数的说明,请参阅颜色名称

例如,

 -fill blue
 -fill "#ff0080"
 -fill "rgb(255,0,128)" 
Run Code Online (Sandbox Code Playgroud)

将颜色规范括在引号中,以防止 shell 解释“#”或括号。

要打印完整的颜色名称列表,请使用-list color选项。

-pointsize size
   PostScript、OPTION1 或 TrueType 字体的点大小。

-gravity type
   为各种其他设置和选项设置当前的重力建议。

选项包括:NorthWest、North、NorthEast、West、Center、East、SouthWest、South、SouthEast。使用-list重力获得的完整列表-gravity在您的ImageMagick安装可用的设置。

label:'your Text Here' 将您的文本写入 image.png。

请参阅更多示例

查看完整的命令行选项


Oli*_*Oli 8

如果我们谈论的是外部视频,我会在inkscape 中制作一个简单的SVG 并带有一个占位符字符串,例如OLISTRING,得到我想要的样子,然后在命令行上操作它以替换我的动态文本。并使用Inkscape 对其进行光栅化.

inkscape -z -e intro.png -w 1920 -h 1080 <(sed 's/OLISTRING/My Video!/' drawing.svg)
Run Code Online (Sandbox Code Playgroud)

这种方法的真正好处是,您只受到在 Inkscape 中可以做什么的限制……由于 Inkscape 的渲染引擎,您还可以获得非常清晰的输出。

结果如下:

在此处输入图片说明

如此呈现(通过我的sed

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="1920"
   height="1080"
   id="svg2"
   version="1.1"
   inkscape:version="0.48.4 r9939"
   sodipodi:docname="New document 1">
  <defs
     id="defs4" />
  <sodipodi:namedview
     id="base"
     pagecolor="#000000"
     bordercolor="#666666"
     borderopacity="1.0"
     inkscape:pageopacity="1"
     inkscape:pageshadow="2"
     inkscape:zoom="0.35"
     inkscape:cx="375"
     inkscape:cy="520"
     inkscape:document-units="px"
     inkscape:current-layer="layer1"
     showgrid="false"
     inkscape:window-width="1920"
     inkscape:window-height="1130"
     inkscape:window-x="-2"
     inkscape:window-y="-3"
     inkscape:window-maximized="1" />
  <metadata
     id="metadata7">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g
     inkscape:label="Layer 1"
     inkscape:groupmode="layer"
     id="layer1"
     transform="translate(0,27.637817)">
    <flowRoot
       xml:space="preserve"
       id="flowRoot2985"
       style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:72px;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;text-align:center"><flowRegion
         id="flowRegion2987"><rect
           id="rect2989"
           width="1917.1428"
           height="662.85712"
           x="0"
           y="174.28572"
           style="text-anchor:middle;text-align:center;font-size:72px" /></flowRegion><flowPara
         id="flowPara2991"></flowPara></flowRoot>    <flowRoot
       xml:space="preserve"
       id="flowRoot2993"
       style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
       transform="translate(0,192.36218)"><flowRegion
         id="flowRegion2995"><rect
           id="rect2997"
           width="1917.1428"
           height="700"
           x="0"
           y="151.42857" /></flowRegion><flowPara
         id="flowPara2999"
         style="font-size:244px;font-weight:bold;text-align:center;text-anchor:middle;fill:#ffff00;-inkscape-font-specification:Sans Bold">OLISTRING</flowPara></flowRoot>    <flowRoot
       xml:space="preserve"
       id="flowRoot3001"
       style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:40px;line-height:125%;letter-spacing:0px;word-spacing:0px"><flowRegion
         id="flowRegion3003"><rect
           id="rect3005"
           width="0"
           height="85.714287"
           x="962.85712"
           y="397.14285" /></flowRegion><flowPara
         id="flowPara3007"></flowPara></flowRoot>  </g>
</svg>
Run Code Online (Sandbox Code Playgroud)


Vla*_*lov 7

我找到了一个解决方案:安装 Imagestick:

sudo apt-get install imagemagick
Run Code Online (Sandbox Code Playgroud)

然后我使用了类似的东西:

convert -pointsize 36 -fill red -draw 'text 10,10 "Loh pidr text" ' b.png test1.jpg
Run Code Online (Sandbox Code Playgroud)

然后使用

man convert
Run Code Online (Sandbox Code Playgroud)

查看文档并玩耍。