Существует ли программа командной строки, которая может преобразовать изображение в художественное изображение 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

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

hellocatfood
источник
1
Я никогда не пробовал, но я знаю, что есть возможность передать текст convert(ImageMagick). Если вы установите для -f of img2txt значение ansi (вместо цветного ansi), вы можете
передать
@horatio: convert, похоже, ожидает ввода файла и отказывается читать из канала. Мы можем сделать это через временный файл в любом случае.
Таккат
Связанный: askubuntu.com/questions/298200/…
Сиро Сантилли 事件 改造 中心 法轮功 六四 事件

Ответы:

7

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

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

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

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

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

lindylex
источник
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
Takkat
источник
Это, вероятно, ближе всего к моей желаемой продукции. Благодарность!
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 .

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

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

jp2a --width=76 file.jpg

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

hoju
источник
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
y.kashyap007
источник
1
Привет и добро пожаловать в GDSE! Это похоже на двойной ответ. Вы можете улучшить его, отредактировав или удалив.
любопытно