텍스트 파일을 그림으로 변환하는 방법 명령 행을 통해 이미지 파일로

일반 텍스트 파일이있는 경우 명령 행을 통해 이미지 파일로 변환하려면 어떻게해야합니까? (그리고 ASCII 아트의 레이아웃을 보존하십시오)



답변

openoffice (libreoffice)를 사용하여 수행 할 수 있습니다.

soffice --convert-to jpg "Textfile.doc"

텍스트 파일에서도 작동합니다.


답변

imagemagick당신의 친구입니다. 다음과 비슷한 것이 도움이 될 수 있습니다.

convert -size 360x360 xc:white -font "FreeMono" -pointsize 12 -fill black -draw @ascii.txt image.png

ascii.txtascii-art 파일은 어디에 있습니까 :-

text 15,15 "                 .88888888:.
                88888888.88888.
              .8888888888888888.
              888888888888888888
              88' _`88'_  `88888
              88 88 88 88  88888
              88_88_::_88_:88888
              88:::,::,:::::8888
              88`:::::::::'`8888
             .88  `::::'    8:88.
            8888            `8:888.
          .8888'             `888888.
          .8888:..  .::.  ...:'8888888:.
        .8888.'     :'     `'::`88:88888
       .8888        '         `.888:8888.
      888:8         .           888:88888
    .888:88        .:           888:88888:
    8888888.       ::           88:888888
    `.::.888.      ::          .88888888
   .::::::.888.    ::         :::`8888'.:.
  ::::::::::.888   '         .::::::::::::
  ::::::::::::.8    '      .:8::::::::::::.
 .::::::::::::::.        .:888:::::::::::::
 :::::::::::::::88:.__..:88888:::::::::::'
  `'.:::::::::::88888888888.88:::::::::'
        `':::_:' -- '' -'-' `':_::::'`
    "

text 15,15텍스트의 첫 번째 줄에 추가합니다 (15,15 오프셋의 위치이다). 또한 변환 할 실제 텍스트는 따옴표로 묶어야합니다. 작은 따옴표 나 큰 따옴표는 사용하지만 문제를 혼동시킬 수 있으므로 아스키 아트의 일부로 사용하지 마십시오.

선택한 글꼴은 고정 폭 글꼴이어야합니다. 그렇지 않으면 텍스트가 정렬되지 않습니다.

이것은 다음을 생성합니다.

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


답변

ImageMagick의 -annotate연산자가 -drawgarethTheRed가 제안한 방법 보다 조금 더 편리 하다는 것을 알았습니다. 단순한 이유로 입력 파일을 수정할 필요가 없습니다. 만큼 강력 -draw하지는 않지만 텍스트 파일의 내용을 이미지에 대량으로 덤프하는 경우에는 잘 작동합니다.

convert -size 360x360 xc:white -font "FreeMono" -pointsize 12 -fill black \
-annotate +15+15 "@ascii.txt" image.png

주어진 파일 내용의 렌더링 된 버전을 출력하지만 text 15x15, -draw프리미티브 의 일부 를 포함하도록 “ascii.txt”파일을 수정하지 않아도됩니다 .

인수 지정

인수하는 -fontFreeMono 사용할 수없는 (또는 단순히 바람직하지 않은) 경우, 지원되는 모든 글꼴 이름이 될 수 있습니다. ImageMagick 명령에 사용 가능한 글꼴 목록은 -list연산자 를 사용하여 얻을 수 있으므로 convert -list font가능한 모든 인수가에 표시됩니다 -font.

-annotate(렌더링 된 텍스트를 캔버스 가장자리에서 얼마나 멀리 이동 시키는가)에 대한 인수는 (각각) 수평 및 수직 픽셀 오프셋으로 구성됩니다. 첫 번째 오프셋 (수평 x- 시프트)은 양의 정수일 수 있지만 몇 픽셀보다 클 필요는 없습니다. 오프셋 제 (Y-수직 이동) 해야최소가에서 선택 폰트 (행 인자의 포인트 크기와 동일 -pointsize)가 ImageMagick를 배치하기 때문에, 기준 오프셋에서 주어진 폰트를. 따라서 글꼴을 최소한 pointsize픽셀 이상 아래로 이동하지 않으면 첫 번째 줄의 상단이 잘립니다.

적어도 몇 픽셀 이상 지나가는 것이 좋습니다. 따라서 사용하는 경우 -pointsize 64이와 비슷한 것을 사용해야합니다 -annotate +15+80. 글꼴 크기가 더 큰 가로 오프셋을 늘릴 이유가 없으며 텍스트 크기와 관련이 없습니다.

출력 이미지의 필요한 치수를 추측해야하는 것도 지루할 수 있습니다. 나는 대개 다음 ImageMagick이의 활용, 과도한 값을 선택 -trim하고 -border그 결과를 자동 자르기 할 수 있습니다. 다음 명령 :

convert -size 1000x2000 xc:white -font "FreeMono" -pointsize 12 -fill black \
-annotate +15+15 "@ascii.txt" -trim -bordercolor "#FFF" -border 10 +repage image.png

는 1000×2000 상자로 렌더링 된 다음 텍스트 주위의 10 픽셀 테두리를 제외한 나머지 공백을 제거합니다. +repage맨 끝의 방지에 출력 PNG는 달리 GIMP는 오프셋 적용할지 여부를 묻는 부하에 대화 상자를 팝업하는 것입니다 원인의 오프셋 (offset) 이미지로 생성된다.

(작은 텍스트 파일의 경우 1000×2000이 과도하며, 긴 텍스트 파일의 경우 최소 세로 크기를 늘려야 할 수도 있습니다. convert그러나 처리하는 동안 비용 과 CPU 가 약간 더 많이 소비 되기 때문에 과대 평가하는 것이 더 간단합니다 .)

전처리 입력

텍스트 파일이 렌더링에 필요한 방식으로 아직 포맷되지 않은 경우 (예 : 매우 긴 줄을 사용하는 경우)로 전달하기 전에 다시 포맷해야 할 수도 있습니다 convert. ImageMagick은 텍스트를 줄 바꿈하지 않으므로 각 텍스트 줄은 전체 길이를 가로로 확장합니다. 다행히도 원하는 명령 줄 포맷터를 통해 파일을 실행 한 다음 처리 된 텍스트를 convert파일에서 직접 읽는 대신 파이프로 파이프 할 수 있습니다.

fmt < ascii.txt | convert -size 1000x2000 xc:white -font "DejaVu-Sans-Condensed" \
-pointsize 24 -fill black -annotate +15+30 "@-" -trim -bordercolor "#FFF" \
-border 10 +repage image.png

명령에 의해 처리 된 ascii.txt 24 포인트 DejaVu Sans Condensed 의 내용이 렌더링 됩니다. 기본 작동 모드에서는 워드 랩핑하여 입력을 75 열 너비로 다시 포맷합니다. (URL과 같이 길이가 75자를 초과하는 긴 연속 문자열이 없으면 확장됩니다.)fmt

일단 fmt텍스트를 포맷했다, 전달됩니다 convert다음 파이프 렌더링되는 fmt이 직접 파일을 읽는 것처럼 동일한 출력을. (파일 이름 지정은 -“명명 된 디스크 파일 대신 표준 입력에서 읽음”이라는 상당히 일반적인 UNIX 셸 축약이며 ImageMagick의 도구는이 규칙을 따릅니다.)


답변