텍스트 파일을 그림으로 변환하는 방법 이미지 파일로

일반 텍스트 파일이있는 경우 명령 행을 통해 이미지 파일로 변환하려면 어떻게해야합니까? (그리고 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의 도구는이 규칙을 따릅니다.)


답변