약 1,000줄의 텍스트 파일을 가져와 가능한 ImageMagick 변환을 사용하여 파일의 각 줄에 대해 별도의 png 이미지를 만들고 싶습니다. 이미지는 1920x1080이어야 하며 배경은 검정색이고 텍스트는 흰색이어야 합니다. 다음을 사용하여 목록을 한 번에 이미지로 가져올 수 있습니다.
convert -size 1980x1020 xc:black -font Play-Regular.ttf -pointsize 85 -fill white -gravity center -draw "text 0,0 '$(cat list.txt)'" image.png
또한 각 줄을 반복하기 위해 bash 파일을 만들어 보았습니다.
#!/bin/bash
File="list.txt"
Lines=$(cat $File)
for Line in $Lines
do
convert -size 1980x1020 xc:black -font Play-Regular.ttf -pointsize 85 -fill white -gravity center -draw "text 0,0 '$(cat Line)'" $line.png
done
가까워진 것 같은 느낌이 들지만 bash-fu가 약하고 명령에서 여러 오류가 발생합니다.
답변1
convert
먼저 bash 대신 zsh를 사용하여 이 줄을 .here로 변환해야 합니다 .
#! /bin/zsh -
file=list.txt
typeset -Z4 n=1 # line counter 0-padded to length 4.
set -o extendedglob
while IFS= read -ru3 line; do
# remove NUL characters if any:
line=${line//$'\0'}
# escape ' and \ characters with \:
escaped_line=${line//(#m)[\'\\]/\\$MATCH}
convert -size 1920x1080 \
xc:black \
-font Play-Regular.ttf \
-pointsize 85 \
-fill white \
-gravity center \
-draw "text 0,0 '$escaped_line'" line$n.png
(( n++ ))
done 3< $file
답변2
도와주셔서 감사합니다! 훌륭한 튜토리얼, 약간의 시행착오를 거쳐 처음으로 실제 BASH를 실행하고 이미지를 만들었습니다! 이것은 작동합니다:
#!/bin/bash
file="list.txt"
while read -r line; do
convert -size 1980x1020 xc:black -font Play-Regular.ttf -pointsize 105 -fill white -gravity center -draw "text 0,0 '$line'" $line.png
done < "$file"
코드가 실제로 실행될 때 정말 신납니다!