Как нарисовать изображение с текстом в центре этого через командную строку?

Вы можете использовать Zekr portable для Linux в любом дистрибутиве.

1
задан 16 December 2014 в 15:13

3 ответа

Если бы мы говорили о внешнем видео, я бы сделал простой SVG в inkscape с строкой-заполнителем, подобной OLISTRING, получив ее, как я хочу, чтобы она выглядела, затем манипулировать ею в командной строке, чтобы подставить мой динамический текст. И использовать Inkscape для его растеризации.

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

Настоящая выгода от этого подхода заключается в том, что вы ограничены только тем, что вы можете сделать в 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>
8
ответ дан 24 May 2018 в 01:54

Я нашел решение: установлен Imagestick:

sudo apt-get install imagemagick

И затем я использовал что-то вроде:

convert -pointsize 36 -fill red -draw 'text 10,10 "Loh pidr text" ' b.png test1.jpg

И затем используйте

man convert
[d3 ], чтобы просмотреть документацию и воспроизвести файл.

7
ответ дан 24 May 2018 в 01:54

Команда ffmpeg не работает, потому что у ubuntu нет ffmpeg, у нее есть libav.

Попробуйте ffmpeg -version для подтверждения (вернет 0.8.something IIRC).

Если вы получаете последнюю версию (2.4.3) из , у ubuntu нет ffmpeg, у нее есть libav вместо , тогда drawtext будет работать.

-1
ответ дан 24 May 2018 в 01:54
  • 1
    Bizarre! Я на Ubuntu 14.04 и ffmpeg возвращает версию 1.2.6. Я знаю, что между ffmpeg и avconv было некоторое несогласие. Я заметил, что avconv является ссылкой на ffmpeg. Так странно. – Paddy Landau 18 November 2014 в 13:14

Другие вопросы по тегам:

Похожие вопросы: