Bagaimana cara menggambar gambar dengan teks di tengah melalui baris perintah?

8

Saya perlu melukis gambar dengan teks di tengah melalui command-line untuk lebih lanjut dimasukkan ke dalam video. Teks kuning sederhana dengan latar belakang hitam.

Saya mencoba FFmpegcara:

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

Yang memberi saya kesalahan berikut:

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

Saya mencoba menginstal ivtools dan mencoba drawtooldan idrawyang jelas untuk lingkungan desktop.

Bagaimana cara membuat gambar sederhana dengan teks di Ubuntu secara terprogram?

Vladimir Stazhilov
sumber

Jawaban:

19

Bagaimana dengan perintah ini:

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

masukkan deskripsi gambar di sini

Dengan menggunakan perintah di atas Anda membuat gambar .png kosong yang warna latar belakangnya hitam.

Warna latar belakang
   mengatur warna latar belakang.
   warna latar belakang default (jika tidak ditentukan atau ditemukan dalam gambar) adalah putih.

Ukuran gambar yang dibuat adalah 800x480 ( width[xheight]).

-ukuran lebar [xtinggi] [+ offset]
   mengatur lebar dan tinggi gambar mentah.

Isi warna-
   warna untuk digunakan saat mengisi grafik primitif.

Opsi ini menerima nama warna, warna hex, atau RGB numerik, RGBA, HSL, HSLA, CMYK, atau spesifikasi CMYKA. Lihat Nama Warna untuk deskripsi tentang cara menentukan dengan benar argumen warna.

Sebagai contoh,

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

Lampirkan spesifikasi warna dalam tanda kutip untuk mencegah "#" atau tanda kurung ditafsirkan oleh shell Anda.

Untuk mencetak daftar lengkap nama warna, gunakan opsi warna -daftar .

-pengukuran ukuran
   pointsize dari font PostScript, OPTION1, atau TrueType.

Jenis -gravity
   mengatur saran gravitasi saat ini untuk berbagai pengaturan dan opsi lainnya.

Pilihan meliputi: NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast. Gunakan gravitasi -list untuk mendapatkan daftar lengkap pengaturan -gravity yang tersedia di instalasi ImageMagick Anda.

label:'your Text Here' tulis teks Anda ke image.png.

Juga lihat lebih banyak contoh .

Lihat opsi baris perintah penuh

αғsнιη
sumber
8

Jika kita berbicara tentang video luar, saya akan membuat SVG sederhana di inkscape dengan string placeholder seperti OLISTRING, mengerti bagaimana saya ingin terlihat kemudian memanipulasi itu pada baris perintah untuk menggantikan teks dinamis saya. Dan gunakan Inkscape untuk meraster itu .

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

Manfaat nyata dari pendekatan ini adalah Anda hanya dibatasi oleh apa yang dapat Anda lakukan di Inkscape ... Anda juga mendapatkan output yang cukup tajam berkat mesin rendering Inkscape.

Inilah hasilnya:

masukkan deskripsi gambar di sini

Seperti yang diberikan dari ini (melalui saya 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>
Oli
sumber
7

Saya menemukan solusi: install Imagestick:

sudo apt-get install imagemagick

Dan kemudian saya menggunakan sesuatu seperti:

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

Dan kemudian gunakan

man convert

untuk melihat dokumentasi dan bermain aroud.

Vladimir Stazhilov
sumber
-1

Perintah ffmpeg tidak berfungsi karena ubuntu tidak memiliki ffmpeg, ia memiliki libav sebagai gantinya .

Coba ffmpeg -versionkonfirmasikan (akan mengembalikan 0.8.sesuatu dengan IIRC).

Jika Anda mendapatkan versi terbaru (2.4.3) dari http://ffmpeg.org maka drawtext akan berfungsi.

OrangeDog
sumber
Aneh! Saya menggunakan Ubuntu 14.04 dan ffmpegmengembalikan versi 1.2.6. Saya tahu bahwa ada beberapa ketidaksepakatan antara ffmpegdan avconv. Saya perhatikan itu avconvadalah tautan ke ffmpeg. Sangat aneh.
Paddy Landau