Як намалювати малюнок з текстом у центрі цього за допомогою командного рядка?


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 зображення, кольором тла якого є чорний.

-задній колір
   встановити колір тла.
   кольором тла за замовчуванням (якщо на зображенні не вказано жодного) або білий.

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

-size width [xheight] [+ offset]
   встановлює ширину та висоту неочищеного зображення.

-заповнити кольоровий
   колір, який слід використовувати при заповненні графічного примітиву.

Цей параметр приймає ім'я кольору, шістнадцятковий колір або числові специфікації RGB, RGBA, HSL, HSLA, CMYK або CMYKA. Дивіться Імена кольорів для опису того, як правильно вказати аргумент кольору.

Наприклад,

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

Додайте специфікацію кольору до лапок, щоб запобігти інтерпретації оболонки "#" або круглих дужок.

Щоб надрукувати повний список назв кольорів, скористайтеся опцією -list color .

-показує розмір точок розміру
   шрифту PostScript, OPTION1 або TrueType.

-гравітаційний тип
   встановлює поточну пропозицію про гравітацію для різних інших параметрів та параметрів.

Вибір включає: Північний Захід, Північ, Північний Схід, Захід, Центр, Схід, Південний Захід, Південь, Південний Схід. Використовуйте -list гравітації , щоб отримати повний список -gravity налаштувань , доступних в установці ImageMagick.

label:'your Text Here' введіть текст у image.png.

Також дивіться більше прикладів .

Див. Повні параметри командного рядка


8

Якби ми говорили про зовнішнє відео, я б створив простий SVG в inkscape із рядком-заповнювачем типу OLISTRING, зрозумійте, як я хочу, щоб він виглядав, а потім маніпулював цим командним рядком, щоб замінити мій динамічний текст. .

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

переглянути документацію та пограти вголос.


-1

Команда ffmpeg не працює, оскільки ubuntu не має ffmpeg, натомість вона має libav .

Спробуйте ffmpeg -versionпідтвердити (повернеться 0,8.щось IIRC).

Якщо ви отримаєте останню версію (2.4.3) від http://ffmpeg.org, тоді текстовий текст буде працювати.


Химерно! Я на Ubuntu 14.04 і ffmpegповертає версію 1.2.6. Я знаю, що між ffmpegі між ними була якась незгода avconv. Я помічаю, що avconvце посилання на ffmpeg. Так дивно.
Падді Ландау
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.