Если у меня есть простой текстовый файл, как я могу преобразовать его в файл изображения через командную строку? (и сохранить макет ASCII-искусства в нем)
command-line
Quora Feans
источник
источник
cat
не сделать снимок экрана?clear && cat file
. Но да, это безобразно.Ответы:
Вы можете использовать openoffice (libreoffice), чтобы сделать это.
он работает и с текстовыми файлами.
источник
--help
выходных данных.) Только морщина, если текст длиннее страницы, похоже, вы получаете только первую страницу. (Если есть способ заставить его выводить другие страницы или несколько файлов, для меня это не сразу очевидно. Передача--outdir
не имеет значения.) Но для коротких фрагментов текста он работает ОЧЕНЬ хорошо, и даже автоматически переносится. Ницца!soffice --convert-to jpg ascii.txt && mogrify -trim -bordercolor "#FFF" -border 10 +repage ascii.jpg
imagemagick
твой друг здесь Вам может помочь что-то похожее на следующее:где
ascii.txt
находится ваш файл ascii-art: -с
text 15,15
добавленной в качестве первой строки текста (15,15 является позиционным смещением). Кроме того, убедитесь, что фактический текст для преобразования заключен в кавычки. Подойдут одинарные или двойные кавычки, но убедитесь, что они не используются как часть вашего ascii-art, так как это может сбить с толку.Выбранный шрифт должен быть моноширинным, иначе текст не будет выравниваться.
Это производит: -
источник
-list
опцию. Так, напримерconvert -list font
, покажет вам все возможные аргументы-font
.sudo yum install ImageMagick
.sudo dnf install ImageMagick
, а на большинстве других популярных дистрибутивов Linux это будет какая-тоsudo apt-get install ...
команда. Несмотря на это, приведенная выше информация действительно предполагает, что ImageMagick установлен в рассматриваемой системе.Я считаю, что
-annotate
оператор ImageMagick более удобен, чем-draw
метод garethTheRed, по той простой причине, что он не требует модификации входного файла. Это не так мощно, как-draw
, но для оптового сброса содержимого текстового файла в изображение это просто отлично.выведет визуализированную версию содержимого данного файла, но без необходимости изменения файла «ascii.txt», чтобы он содержал
text 15x15
часть-draw
примитива.Указание аргументов
Аргументом
-font
может быть любое имя поддерживаемого шрифта, если FreeMono недоступен (или просто не нужен). Список шрифтов, доступных для любой команды ImageMagick, можно получить с помощью-list
оператора, поэтомуconvert -list font
отобразятся все возможные аргументы для-font
.Аргументы
-annotate
(как далеко сдвинуть визуализированный текст от края холста) состоят из горизонтальных и вертикальных смещений пикселей (соответственно). Первое смещение (горизонтальное смещение по оси X) может быть любым положительным целым числом, но не должно превышать несколько пикселей. Второе смещение (вертикальное смещение по оси Y) должно быть, по крайней мере, равно размеру точки выбранного шрифта (аргумент to-pointsize
), потому что ImageMagick установит базовую линию шрифта с заданным смещением. Поэтому, если вы не сдвинете шрифт хотя бы наpointsize
пиксели, верхняя часть первой строки будет обрезана.Я рекомендую переходить как минимум на несколько пикселей, поэтому, если вы используете,
-pointsize 64
то вам нужно соединить это с чем-то вроде-annotate +15+80
. (Нет смысла увеличивать горизонтальное смещение с большими размерами шрифта, это не имеет отношения к размерам текста.)Необходимость угадать необходимые размеры выходного изображения также может быть утомительной. Я обычно просто выбираю чрезмерные значения, затем использую ImageMagick
-trim
и-border
автоматически обрезаю результат. Следующая команда:будет отображаться в поле 1000x2000, а затем обрезать лишние пробелы за исключением 10-пиксельной границы по всему тексту. В
+repage
самом конце предотвращает создание выходного PNG со смещением изображения, что в противном случае вызвало бы появление в GIMP диалогового окна при загрузке с вопросом, следует ли применять смещение.(Очевидно, что 1000x2000 является избыточным для небольших текстовых файлов, а для более длинных, по крайней мере, может потребоваться увеличить, по крайней мере, вертикальное измерение. Однако, его проще переоценить, поскольку единственная стоимость -
convert
потреблять немного больше ресурсов процессора и памяти при обработке.)Ввод предварительной обработки
Если ваш текстовый файл еще не отформатирован так, как вам нужно для его рендеринга (скажем, если он использует очень длинные строки), то вам, возможно, придется переформатировать его перед передачей
convert
. ImageMagick не будет переносить текст, поэтому каждая строка текста будет расширяться по горизонтали. К счастью, можно запустить файл через любые средства форматирования командной строки, которые вы хотите, а затем передать обработанный текстconvert
вместо чтения непосредственно из файла:Это будет отображать содержимое
ascii.txt
24-точечного DejaVu Sans Condensed после его обработкиfmt
командой, которая в режиме работы по умолчанию переформатирует свой ввод путем переноса слов на ширину 75 столбцов. (Если нет длинных непрерывных строк длиной более 75 символов, таких как URL, в этом случае они будут расширены.)После того
fmt
, как текст будет переформатирован, он будет передан вconvert
него, а затем отобразитfmt
вывод по конвейеру , как если бы он читал файл напрямую. (Указание имени файла-
является довольно распространенным сокращением оболочки UNIX для «чтения из стандартного ввода вместо любого именованного файла на диске», и инструменты ImageMagick следуют этому соглашению.)источник
annotate
аргумента должен быть больше, чем размер точки, чтобы быть уверенным, что все появляется: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
успешно, когда вы используете-draw
форму @ garethTheRed и вставляете команды позиционирования вascii.txt
файл? Мне кажется, было бы довольно странно, если бы это было так, поскольку у меня возникли проблемы с представлением, какие проблемы безопасности могут возникнуть-annotate
, если это не относится к-draw
работе при работе с содержимым импортированного текстового файла./etc/ImageMagick-6/policy.xml
содержит,<policy domain="path" rights="none" pattern="@*"/>
так что я предполагаю, что это тот. stdin также не работает, предположительно потому, что в нем также есть@-
шаблон. Для отчаявшихся,"$(cat ascii.txt)"
работает, если не взорвать длину CLI.