Как Chris упомянул, это - разделитель, однако для проверки длины строки, Вы сделали бы следующее:
if [ -z "$REPLY" -o "$REPLY" == "y" ]; then
echo "It was acknowledged"
else
echo "Not acknowledged"
exit 1
fi
Для этого можно использовать openoffice (libreoffice).
soffice --convert-to jpg "Textfile.doc"
работает и с текстовыми файлами.
imagemagagick
твой друг здесь. Вам может помочь нечто подобное:-
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:::::::::'
`':::_:' -- '' -'-' `':_::::'`
"
с текстом 15,15
добавленным в качестве первой строки текста (15,15 - это смещение позиции). Также убедитесь, что конвертируемый текст заключен в кавычки. Одиночные или двойные кавычки подойдут, но убедитесь, что они не используются как часть вашего ascii-art, так как это приведет к путанице.
Выбранный вами шрифт должен быть моноспицевым, иначе текст не выровняется.
Это приводит к:-
Я считаю, что оператор ImageMagick -annotate
немного удобнее, чем метод -draw
, предложенный garethTheRed, по той простой причине, что он не требует модификации входного файла. . Он не такой мощный, как -draw
, но для полного выгрузки содержимого текстового файла в изображение он отлично подходит.
convert -size 360x360 xc:white -font "FreeMono" -pointsize 12 -fill black \
-annotate +15+15 "@ascii.txt" image.png
выведет визуализированную версию содержимого данного файла, но без необходимости изменять ваш файл «ascii.txt», чтобы он содержал текст 15x15
часть примитива -draw
.
Аргументом для -font
может быть любое имя поддерживаемого шрифта, если FreeMono недоступен (или просто нежелателен). Список шрифтов, доступных для любой команды ImageMagick, можно получить с помощью оператора -list
, поэтому convert -list font
отобразит все возможные аргументы для -font
.
Аргументы -annotate
(насколько далеко сдвинуть отображаемый текст от края холста) состоят из горизонтального и вертикального смещения пикселей (соответственно). Первое смещение (горизонтальный сдвиг по оси x) может быть любым положительным целым числом, но не должно превышать нескольких пикселей. Второе смещение (вертикальный сдвиг по оси Y) должно быть как минимум равным размеру точки выбранного шрифта (аргумент -pointsize
), потому что ImageMagick поместит базовую линию шрифта с заданным смещением.Поэтому, если вы не сместите шрифт вниз хотя бы на точек
пикселей, верх первой строки будет обрезан.
Я рекомендую перейти по крайней мере на несколько пикселей, поэтому, если вы используете -pointsize 64
, вы должны объединить это с чем-то вроде -annotate + 15 + 80
. (Нет причин увеличивать горизонтальное смещение при увеличении размера шрифта, это не имеет отношения к размерам текста.)
Угадывать необходимые размеры выходного изображения также может быть утомительно. Обычно я просто выбираю чрезмерные значения, а затем использую ImageMagick's -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 вызывал бы всплывающее диалоговое окно при загрузке с вопросом, следует ли применить смещение.
(Очевидно, что 1000x2000 слишком много для небольших текстовых файлов, а для более длинных, возможно, потребуется увеличить по крайней мере вертикальный размер. Однако проще переоценить, поскольку единственная стоимость - преобразование
, немного потребляющее больше ЦП и памяти во время обработки.)
Если ваш текстовый файл еще не отформатирован так, как вам нужно для его рендеринга (скажем, если в нем используются очень длинные строки), вам, возможно, придется переформатировать перед передачей в 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, после он был обработан командой fmt
, которая в своем режиме работы по умолчанию переформатирует ввод на перенос слов до 75 столбцов. (Если нет длинных непрерывных строк длиной более 75 символов, таких как URL-адреса, в этом случае они будут расширяться.)
После того, как fmt
переформатирует текст, он будет передан на convert
, который затем отобразит вывод fmt
в конвейер, как если бы он читал файл напрямую. (Указание имени файла -
является довольно распространенным сокращением оболочки UNIX для «чтения из стандартного ввода вместо любого именованного файла на диске», и инструменты ImageMagick следуют этому соглашению.)
Простое решение — использовать pango-view
, предоставленную Pango , библиотеку рендеринга текста, используемую в GTK, которую вы, вероятно, уже установили:
pango-view --font=mono -qo image.png file
Вы также можете создавать SVG !
pango-view --font=mono -qo image.svg file
pango-view
имеет множество вариантов настройки и компоновки, обратитесь к его справочной странице.