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

8

Мне нужно нарисовать изображение с текстом в центре через командную строку, чтобы добавить в видео. Простой желтый текст на черном фоне.

Я попробовал 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

Который дал мне следующую ошибку:

[AVFilterGraph @ 0xf56020] No such filter: 'drawtext'

Я попытался установить ivtools и попытался, drawtoolи idraw, очевидно, для настольных сред.

Как создать простое изображение с текстом в Ubuntu программно?

Владимир Стажилов
источник

Ответы:

19

Как насчет этой команды:

convert -background black -size 800x480 -fill "#ff0080"  -pointsize 72 -gravity center label:'Ask Ubuntu' output.png

введите описание изображения здесь

Используя приведенную выше команду, вы создаете пустое изображение .png, цвет фона которого черный.

-background цвет
   установить цвет фона.
   цвет фона по умолчанию (если он не указан или не найден на изображении) - белый.

Размер созданного изображения будет 800x480 ( width[xheight]).

-size width [xheight] [+ offset]
   установить ширину и высоту необработанного изображения.

-Заполнить цвет,
   используемый при заполнении графического примитива.

Этот параметр принимает имя цвета, шестнадцатеричный цвет или числовую спецификацию RGB, RGBA, HSL, HSLA, CMYK или CMYKA. См. Имена цветов для описания того, как правильно указать аргумент цвета.

Например,

 -fill blue
 -fill "#ff0080"
 -fill "rgb(255,0,128)" 

Заключите цветовую спецификацию в кавычки, чтобы предотвратить интерпретацию «#» или скобок вашей оболочкой.

Чтобы напечатать полный список названий цветов, используйте опцию -list color .

-pointsize размер
   pointsize в PostScript, OPTION1 или TrueType шрифта.

-gravity тип
   задает текущее гравитационное предложение для различных других настроек и опций.

Варианты выбора: Северо-Запад, Север, Северо-Восток, Запад, Центр, Восток, Юго-Запад, Юг, Юго-Восток. Используйте -list gravity, чтобы получить полный список настроек -gravity , доступных в вашей установке ImageMagick.

label:'your Text Here' напишите свой текст в image.png.

Также см. Больше примеров .

Смотрите полные параметры командной строки

αғsнιη
источник
8

Если бы мы говорили о внешнем видео, я бы сделал простой 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>
Оли
источник
7

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

sudo apt-get install imagemagick

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

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

А потом использовать

man convert

чтобы увидеть документацию и играть в Aroud.

Владимир Стажилов
источник
-1

Команда ffmpeg не сработала, потому что в Ubuntu нет ffmpeg, вместо этого есть libav .

Попробуйте ffmpeg -versionподтвердить (вернет 0,8. Что-то IIRC).

Если вы получите последнюю версию (2.4.3) с http://ffmpeg.org, то drawtext будет работать.

OrangeDog
источник
Bizarre! Я на Ubuntu 14.04 и ffmpegвозвращает версию 1.2.6. Я знаю, что было некоторое разногласие между ffmpegи avconv. Я заметил, что avconvэто ссылка на ffmpeg. Так странно.
Пэдди Ландау