Чи існує програма командного рядка, яка може перетворити зображення на зображення зображення ASCII?


19

Чи існує програма командного рядка (для Linux), яка може перетворити зображення на мистецтво ascii, а потім зберегти цей вихід у вигляді зображення, наприклад jpg або png?

Щоб проілюструвати те, що мені потрібно, я хочу перетворити зображення нижче в мистецтво ascii введіть тут опис зображення

Висновок, який я бажаю від програми, повинен бути подібний до цього, який був створений знімком скріншоту виходу перетворювача зображення в аscii (вихід був чистим текстом)

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

Я знаю, що GIMP має можливість зберігати зображення як ascii art, а aview також може перетворити зображення в ascii. Однак перший не може бути виконаний за допомогою командного рядка, а останній лише дозволяє переглядати вихід, а не зберігати його (я не хочу вдаватися до того, щоб зробити знімок екрана).

Я також знаю, що libcaca може зберегти свій вихід до зображення, але він видає лише барвисті асції, як нижче.

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

Зроблено шляхом перетворення вихідного зображення у відтінки сірого, а потім за допомогою наступної команди:

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

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


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

@horatio: конвертування, схоже, очікує введення файлу і відмовляється читати з труби. Ми все одно можемо це зробити через тимчасовий файл.
Таккат

Відповіді:


7

Ви можете використовувати цей код python, який я створив для створення мистецтва ascii із нерухомих зображень та відео:

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

Приклад виведення

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

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


2
посилання приходять і йдуть, навіть якщо це ваш власний сайт ... чи не могли б ви додати два скріншоти "до" і "після", використовуючи свій код?
Ілан

4
@Ilan Я додав приклад і вказав на загальнодоступне сховище git
hellocatfood

14

Якщо вам здається, що ви працюєте з Linux, ви можете легко зшивати програми разом, щоб отримати бажаний результат. Потім це також можна включити до сценарію пакетної обробки.

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

Нижче зразок сценарію буде створювати зображення ASCII-art (формат залежно від розширення, яке ми надаємо, .jpgдля JPEG) з вхідного JPEG-зображення. Джерело надається до 160 символів шириною в 6 pt. Потім це буде просто відповідати розміру сторінки за замовчуванням, як заздалегідь визначено для конвертування.

#! /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 в 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. Безпосередньо для використання з командного рядка:

jp2a --width=76 file.jpg

Ви можете перевірити результати в Інтернеті на веб- сайті asciiconvert.com .


jp2a вже вказаний , і ваше посилання взагалі нічого не додає (воно не може відкритися).
usr2564301

1

Ви ніби використовуєте Linux і вже знаєте libcaca. Є ще одна вкладка, яка робить саме те, що ви говорите (Зображення Ассії в командному рядку): Aalib .

Є багато програм, які роблять це. Цей працює як на Linux, так і на Windows . Не використовує зовнішні бібліотеки, повний вихідний код тощо тощо ...


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

1

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

Ви маєте рацію, aalib не видає зображення, але він робить вихідний текст. Як і багато інших програм, які працюють в командному рядку.

Якщо ви використовуєте Linux, існує програма командного рядка під назвою asciitopgm, яка перетворить текст ascii в растрову карту. Це частина пакету netpbm.

Тож ви можете використовувати комбінацію інструментів:

  1. aalib, щоб намалювати зображення за допомогою тексту
  2. asciitopgm для створення бітової карти pgm з текстовим файлом.
  3. (необов'язково) Використовуйте перетворити (з пакету Imagemagick) для перетворення pgm у будь-який інший растровий формат, який ви хочете.

Я думаю, ти можеш зробити те, що ти хотів таким чином.


0

Так, є інструмент під назвою, jp2aякий в основному перетворює зображення jpg в мистецтво ascii.

Наприклад:

$ jp2a skull.jpg

Оригінальний череп.jpg

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

Вихід Ascii ст

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

Обов’язково використовуйте jpg зображення. Якщо ваше зображення в іншому форматі, ви можете змінити його

$ convert skull.png skull.jpg

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