일반 텍스트 파일이있는 경우 명령 행을 통해 이미지 파일로 변환하려면 어떻게해야합니까? (그리고 ASCII 아트의 레이아웃을 보존하십시오)
cat
스크린 샷을 찍지 않습니까?
clear && cat file
.. 그러나 그렇습니다.
일반 텍스트 파일이있는 경우 명령 행을 통해 이미지 파일로 변환하려면 어떻게해야합니까? (그리고 ASCII 아트의 레이아웃을 보존하십시오)
cat
스크린 샷을 찍지 않습니까?
clear && cat file
.. 그러나 그렇습니다.
답변:
openoffice (libreoffice)를 사용하여 수행 할 수 있습니다.
soffice --convert-to jpg "Textfile.doc"
텍스트 파일에서도 작동합니다.
--help
출력 에 이것에 대한 언급이나 힌트가없는 것도 도움이되지 않습니다 .) 텍스트가 한 페이지보다 긴 경우에만 주름 만 첫 페이지를 얻는 것처럼 보입니다. (다른 페이지 또는 여러 파일을 출력하도록 지시하는 방법이 있다면 나에게 분명하지 않습니다. 전달 --outdir
하면 차이가 없습니다.) 그러나 짧은 텍스트의 경우 매우 잘 작동하며 자동 줄 바꿈도 가능합니다. 좋은!
soffice --convert-to jpg ascii.txt && mogrify -trim -bordercolor "#FFF" -border 10 +repage ascii.jpg
imagemagick
당신의 친구입니다. 다음과 비슷한 것이 도움이 될 수 있습니다.
convert -size 360x360 xc:white -font "FreeMono" -pointsize 12 -fill black -draw @ascii.txt image.png
ascii.txt
ascii-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 오프셋의 위치이다). 또한 변환 할 실제 텍스트는 따옴표로 묶어야합니다. 작은 따옴표 나 큰 따옴표는 사용하지만 문제를 혼동시킬 수 있으므로 아스키 아트의 일부로 사용하지 마십시오.
선택한 글꼴은 고정 폭 글꼴이어야합니다. 그렇지 않으면 텍스트가 정렬되지 않습니다.
이것은 다음을 생성합니다.
-list
옵션을 사용하여 ImageMagick 명령 (변환 포함)에서 현재 사용 가능한 글꼴 목록을 얻을 수 있습니다 . 예를 들어 convert -list font
에 가능한 모든 인수를 보여줍니다 -font
.
sudo yum install ImageMagick
.
sudo dnf install ImageMagick
입니다. 대부분의 다른 Linux 배포판에서는 약간의 sudo apt-get install ...
명령입니다. 어쨌든 위의 정보는 실제로 해당 시스템에 ImageMagick이 설치되어 있다고 가정합니다.
ImageMagick의 -annotate
연산자가 -draw
garethTheRed가 제안한 방법 보다 조금 더 편리 하다는 것을 알았습니다. 단순한 이유로 입력 파일을 수정할 필요가 없습니다. 만큼 강력 -draw
하지는 않지만 텍스트 파일의 내용을 이미지에 대량으로 덤프하는 경우에는 잘 작동합니다.
convert -size 360x360 xc:white -font "FreeMono" -pointsize 12 -fill black \
-annotate +15+15 "@ascii.txt" image.png
주어진 파일 내용의 렌더링 된 버전을 출력하지만 text 15x15
, -draw
프리미티브 의 일부 를 포함하도록 "ascii.txt"파일을 수정하지 않아도됩니다 .
인수하는 -font
FreeMono 사용할 수없는 (또는 단순히 바람직하지 않은) 경우, 지원되는 모든 글꼴 이름이 될 수 있습니다. 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
는 1000x2000 상자로 렌더링 된 다음 텍스트 주위의 10 픽셀 테두리를 제외한 나머지 공백을 제거합니다. +repage
맨 끝의 방지에 출력 PNG는 달리 GIMP는 오프셋 적용할지 여부를 묻는 부하에 대화 상자를 팝업하는 것입니다 원인의 오프셋 (offset) 이미지로 생성된다.
(작은 텍스트 파일의 경우 1000x2000이 과도하며, 긴 텍스트 파일의 경우 최소 세로 크기를 늘려야 할 수도 있습니다. 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의 도구는이 규칙을 따릅니다.)
annotate
인수 의 y 성분은 pointsize보다 커야 모든 것이 표시됩니다. 원하는 크기는 convert -size 1000x2000 xc:white -font "FreeMono" -pointsize 123 -fill black \ -annotate +0+123 "@ascii.txt" -trim -bordercolor "#FFF" -border 10 +repage image.png
어디에 있습니까 123
? 또한 convert -list font
지원되는 글꼴을 찾을 수 있습니다 ( "FreeMono"
일반적으로 지원되지 않음).
convert -list font
이 아닌 올바른 구문 convert -list fonts
입니다.
/etc/ImageMagick-7/policy.txt
이러한 변환 형식을 방해 하는 정책이 설정되어 있지 않습니다 . 어떤 정책이 전환을 차단하고 있으며 왜 설정되어 있는지 알고 있습니까? (또한, 빨대에서 파악 : 파이프로 연결된합니까 fmt ...
? 혹시 그렇다면, 당신은 단지 대체 할 수에 의해, 명령 작업의 형태 fmt
로 cat
하고, 같은 결과를 얻을 @ascii.txt
버전.)
convert
성공 하면 garethTheRed의 @ 사용하는 경우 -draw
에 위치 명령을 형태로 삽입 ascii.txt
파일? 가져온 텍스트 파일의 내용을 처리 할 때 적용되지 않을 보안 문제가 무엇인지 상상하는 데 어려움을 겪고 있기 때문에 꽤 기괴한 것 같습니다 . -annotate
-draw
/etc/ImageMagick-6/policy.xml
포함 <policy domain="path" rights="none" pattern="@*"/>
그래서 내가 그 하나를 추측 해요. stdin도 @-
패턴 이 있기 때문에 작동하지 않습니다 . 절망적 인 "$(cat ascii.txt)"
경우 CLI 길이를 늘리지 않으면 작동합니다.