명령 줄을 통해 텍스트 중앙에 텍스트가있는 그림을 그리는 방법은 무엇입니까?


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을 하고 시도 drawtoolidraw데스크탑 환경에 분명히있는.

프로그래밍 방식으로 우분투에서 텍스트로 간단한 이미지를 만드는 방법은 무엇입니까?

답변:


19

이 명령은 어떻습니까?

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

여기에 이미지 설명을 입력하십시오

위의 명령을 사용하면 배경색이 검은 색인 빈 .png 이미지를 만듭니다.

-background color 배경색을
   설정합니다.
   기본 배경색 (이미지에 지정되지 않은 경우)은 흰색입니다.

생성 된 이미지 크기는 800x480 ( width[xheight])입니다.

-size width [xheight] [+ offset]
   은 원본 이미지의 너비와 높이를 설정합니다.

-기본 색상
   을 채울 때 사용할 색상 색상을 채 웁니다.

이 옵션은 색상 이름, 16 진수 색상 또는 숫자 RGB, RGBA, HSL, HSLA, CMYK 또는 CMYKA 사양을 허용합니다. 색상 인수를 올바르게 지정하는 방법에 대한 설명은 색상 이름 을 참조하십시오 .

예를 들어

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

쉘에서 "#"또는 괄호가 해석되지 않도록 색상 스펙을 따옴표로 묶으십시오.

전체 색상 이름 목록을 인쇄하려면 -list color 옵션을 사용하십시오 .

-pointsize 크기
   는 PostScript, OPTION1 또는 TrueType 글꼴을 가리 킵니다 .

-gravity type
   은 다양한 다른 설정 및 옵션에 대한 현재 중력 제안을 설정합니다.

NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast 중에서 선택할 수 있습니다. -list gravity 을 사용 하여 ImageMagick 설치에서 사용 가능한 전체 -gravity 설정 목록을 얻으 십시오.

label:'your Text Here' image.png에 텍스트를 쓰십시오.

더 많은 예제참조하십시오 .

전체 명령 행 옵션보기


8

외부 비디오에 대해 이야기하는 경우와 같은 자리 표시 자 문자열을 사용하여 inkscape에서 간단한 SVG를 만들고 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

해결책을 찾았습니다.

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가 없기 때문에 ffmpeg 명령이 작동 하지 않았습니다 . 대신 libav가 있습니다.

ffmpeg -version확인 하려고 합니다 (0.8.something IIRC를 반환합니다).

http://ffmpeg.org 에서 최신 버전 (2.4.3) 을 받으면 드로우 텍스트가 작동합니다.


기괴한! 우분투 14.04에 있으며 ffmpeg버전 1.2.6을 반환합니다. ffmpeg와 사이에 의견 차이가 있음을 알고 avconv있습니다. 나는 avconv에 대한 링크 ffmpeg입니다. 그래서 이상한.
Paddy Landau
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.