Làm thế nào để vẽ một bức tranh với văn bản ở trung tâm của nó thông qua dòng lệnh?


8

Tôi cần vẽ một hình ảnh với văn bản ở trung tâm thông qua dòng lệnh để tiếp tục đưa vào video. Một văn bản màu vàng đơn giản trên nền đen.

Tôi đã thử FFmpegcách:

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

Điều này đã cho tôi các lỗi sau:

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

Tôi đã cố gắng cài đặt ivtools và đã thử drawtoolidrawrõ ràng là dành cho môi trường máy tính để bàn.

Làm cách nào để tạo một hình ảnh đơn giản với văn bản trong Ubuntu theo lập trình?

Câu trả lời:


19

Điều gì về lệnh này:

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

nhập mô tả hình ảnh ở đây

Bằng cách sử dụng lệnh trên, bạn tạo một hình ảnh .png trống mà màu nền của nó là màu đen.

-background màu
   thiết lập màu nền.
   màu nền mặc định (nếu không có màu nào được chỉ định hoặc tìm thấy trong ảnh) là màu trắng.

Kích thước hình ảnh được tạo sẽ là 800x480 ( width[xheight]).

-size width [xheight] [+ offset]
   đặt chiều rộng và chiều cao của ảnh thô.

-Hãy
   màu để sử dụng khi tô màu nguyên thủy.

Tùy chọn này chấp nhận tên màu, màu lục hoặc thông số kỹ thuật số RGB, RGBA, HSL, HSLA, CMYK hoặc CMYKA. Xem Tên màu để biết mô tả về cách chỉ định đúng đối số màu.

Ví dụ,

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

Kèm theo đặc tả màu trong dấu ngoặc kép để ngăn "#" hoặc dấu ngoặc đơn không được giải thích bởi trình bao của bạn.

Để in danh sách đầy đủ các tên màu, hãy sử dụng tùy chọn màu -list .

- chỉ kích thước kích thước điểm kích thước
   của phông chữ PostScript, OPTION1 hoặc TrueType.

-gravity loại
   đặt gợi ý hấp dẫn hiện hành đối với các thiết lập khác nhau và các tùy chọn.

Lựa chọn bao gồm: NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast. Sử dụng -list trọng lực để có được một danh sách đầy đủ của -gravity thiết lập sẵn trong cài đặt ImageMagick của bạn.

label:'your Text Here' viết văn bản của bạn vào image.png.

Cũng xem thêm ví dụ .

Xem các tùy chọn dòng lệnh đầy đủ


8

Nếu chúng ta đang nói về video bên ngoài, tôi sẽ tạo một SVG đơn giản trong inkscape với chuỗi giữ chỗ như thế OLISTRING, lấy nó theo cách tôi muốn nó nhìn sau đó thao tác trên dòng lệnh để thay thế văn bản động của tôi. Và sử dụng Inkscape để raster .

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

Lợi ích thực sự với cách tiếp cận này là bạn chỉ bị giới hạn bởi những gì bạn có thể làm trong Inkscape ... Bạn cũng có được đầu ra khá rõ nét nhờ vào công cụ kết xuất của Inkscape.

Đây là kết quả:

nhập mô tả hình ảnh ở đây

Như được kết xuất từ ​​điều này (đi qua của tôi 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

Tôi đã tìm thấy một giải pháp: đã cài đặt Imagestick:

sudo apt-get install imagemagick

Và sau đó tôi đã sử dụng một cái gì đó như:

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

Và sau đó sử dụng

man convert

để xem tài liệu và chơi aroud.


-1

Lệnh ffmpeg không hoạt động vì ubfox không có ffmpeg, thay vào đó nó có libav .

Hãy thử ffmpeg -versionxác nhận (sẽ trả về 0.8.s Something IIRC).

Nếu bạn nhận được phiên bản mới nhất (2.4.3) từ http://ffmpeg.org thì drawtext sẽ hoạt động.


Kỳ quái! Tôi đang dùng Ubuntu 14.04 và ffmpegtrả về phiên bản 1.2.6. Tôi biết rằng có một số bất đồng giữa ffmpegavconv. Tôi nhận thấy đó avconvlà một liên kết đến ffmpeg. Thật ki cục.
Paddy Landau
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.