Существует ли программа командной строки, которая может преобразовать изображение в художественное изображение ASCII?


19

Существует ли программа командной строки (для Linux), которая может преобразовать изображение в ascii art и затем сохранить этот вывод в виде изображения, например, jpg или png?

Чтобы проиллюстрировать, что мне нужно, я хочу преобразовать изображение ниже в ascii art введите описание изображения здесь

Вывод, который я хочу получить из программы, должен быть аналогичен выводу, который был создан путем создания снимка экрана с вывода конвертера изображения в ascii (вывод был простым текстом)

введите описание изображения здесь

Мне известно, что в GIMP есть возможность сохранить изображение как ascii art, а aview также может конвертировать изображение в ascii. Тем не менее, первое не может быть сделано через командную строку, а второе позволяет только просматривать выходные данные, а не сохранять их (я не хочу прибегать к созданию снимка экрана с выводом).

Я также знаю, что libcaca может сохранять свои выходные данные в изображение, но выводит только красочные ascii, как показано ниже.

введите описание изображения здесь

Сделано путем преобразования исходного изображения в оттенки серого, а затем с помощью следующей команды:

img2txt -W 70 -f tga input.jpg > output.tga

Причина, по которой вам нужна программа командной строки, заключается в пакетной обработке папки, полной изображений.


1
Я никогда не пробовал, но я знаю, что есть возможность передать текст convert(ImageMagick). Если вы установите для -f of img2txt значение ansi (вместо цветного ansi), вы можете
передать

@horatio: convert, похоже, ожидает ввода файла и отказывается читать из канала. Мы можем сделать это через временный файл в любом случае.
Таккат

Ответы:


7

Вы можете использовать этот код Python, который я создал, чтобы создавать ascii art из неподвижных изображений и видео:

https://gist.github.com/lindylex/9374326

Пример вывода

оригинал введите описание изображения здесь

ASCII художественный вывод ( python ascii_movie_image_ver_1.py cat.jpg 4 10) введите описание изображения здесь


2
ссылки приходят и уходят, даже если это ваш собственный сайт ... не могли бы вы добавить два снимка экрана "до" и "после", используя ваш код?
Илан

4
@ Илан Я добавил пример и указал на публичный репозиторий git
hellocatfood

14

Если вам кажется, что вы работаете в Linux, вы можете легко объединить приложения, чтобы получить желаемый результат. Это также может быть включено в ваш скрипт пакетной обработки.

В приведенном ниже примере используется jp2a , мощный конвертер JPG в ASCII-art с множеством опций для достижения желаемых результатов (см. Справочную страницу). Затем мы далее обрабатываем полученный текстовый файл ASCII в изображение, используя команду convert из набора ImageMagick . Опять же, есть много вариантов точной настройки результата. Оба приложения, вероятно, будут доступны из репозиториев вашего дистрибутива.

Приведенный ниже пример сценария создаст изображение ASCII-art (формат зависит от того, .jpgкакое расширение мы даем для JPEG) из входного JPEG-изображения. Источник визуализируется до 160 символов шириной в 6 пунктов. Затем он будет просто соответствовать размеру страницы по умолчанию, как это определено при конвертации.

#! /bin/bash
#Usage ./j2asc infile.jpg outfile.jpg

echo "converting $1 to $2"
jp2a --width=160 -i  $1 --output=tmp.txt
convert -font Courier -pointsize 6 tmp.txt $2

Это, вероятно, ближе всего к моей желаемой продукции. Благодарность!
hellocatfood

Есть ли способ указать ширину, чтобы быть чем-то другим тогда 835px? Я хочу преобразовать ascii art в изображение 1920x1080обоев, но когда я передаю -resize 1920x1080опцию, ширина остается на 835px.

@awashburn: размер изображения определяется числом символов (шириной) и размером точек. Увеличьте размер точек для большего вывода или масштабируйте получившееся изображение во втором прогоне.
Таккат

1
Для пользователей MacOS: jp2a также доступен через доморощенные и работают: brew install jp2a.
k0pernikus

1
Также рассмотрим прямой выход к HTML в некоторых случаях: jp2a --html --width=160 --chars="\'\"love" input.jpg --output=output.htm. Вы можете указать предпочитаемый набор символов для рендеринга (вам придется экранировать метасимволы, если вы хотите их использовать). Для jp2a см. Также AUR для Arch .

2

В Node.js Knockout 2012 было выигрышное представление, которое взяло видео с веб-камеры и выложило «ленту ascii»:

Asciigram

Асииграммная страница

Asciigram - это «инструмент повышения производительности», который позволяет создавать ASCII-видео и изображения с помощью веб-камеры. Вы также можете создавать изображения ASCII, перетаскивая изображения на страницу. [Ссылка на сайт]

Это не совсем командная строка, но, может быть, вы можете модифицировать ее для своих нужд. Библиотека, которую они используют для преобразования изображения в ascii, называется Jscii .


1
Он выводит только текст, а не изображения. Плюс, это не программа командной строки
hellocatfood

2

Я использую jp2a для ascii art. Просто использовать из командной строки:

jp2a --width=76 file.jpg

И можете проверить результаты онлайн на asciiconvert.com .


jp2a уже указан , и ваша ссылка вообще ничего не добавляет (не открывается).
usr2564301

1

Вы, кажется, используете Linux и уже знаете libcaca. Есть еще одна библиотека, которая делает именно то, что вы говорите (Изображение для Ascii в командной строке): Aalib .

Есть много программ для этого. Этот работает как на Linux и Windows . Не использует внешние библиотеки, полный исходный код и т. Д ...


Насколько я знаю, Aalib не может сохранить свои выходные данные непосредственно в изображение - необходимо будет использовать какой-либо метод, включающий снимки экрана, который не будет надежным для больших изображений. Если есть способ сделать это с помощью Aalib, не могли бы вы обновить свой ответ? Программа, которую вы упомянули, выглядит действительно хорошо. Это делает пакетное преобразование и есть ли интерфейс командной строки для этого?
hellocatfood

1

Пока я знаю, что программа не имеет интерфейса командной строки, но конвертирует изображения в текст, а затем в изображения. Источник доступен, так что вы можете использовать его, чтобы написать свой собственный инструмент.

Вы правы, aalib не выводит изображения, но выводит текст. Как и многие другие программы, которые работают в командной строке.

Если вы используете Linux, существует программа командной строки asciitopgm, которая преобразует текст ascii в растровое изображение. Это часть пакета netpbm.

Таким образом, вы можете использовать комбинацию инструментов:

  1. аалиб, чтобы нарисовать изображение с помощью текста
  2. asciitopgm для создания растрового изображения pgm с текстовым файлом.
  3. (необязательно) Используйте команду convert (из пакета Imagemagick), чтобы преобразовать pgm в любой другой растровый формат.

Я думаю, что вы можете делать то, что вы хотели таким образом.


0

Да, есть инструмент под названием, jp2aкоторый в основном преобразует изображение jpg в ascii art.

Например:

$ jp2a skull.jpg

Оригинал Skull.jpg

введите описание изображения здесь

Выход Ascii Art

введите описание изображения здесь

Убедитесь, что используете изображение JPG. Если ваше изображение в другом формате, вы можете изменить его

$ convert skull.png skull.jpg

1
Привет и добро пожаловать в GDSE! Это похоже на двойной ответ. Вы можете улучшить его, отредактировав или удалив.
любопытно
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.