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


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데스크탑 환경에 분명히있는.

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

답변:


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.