Точка, точка, запятая, вышла рожица кривая. Первый смайлик.
|
Задолго до компьютерного, железного и даже каменного века одна хитрая обезьяна выбила зубами другой на подвернувшемся под руку булыжнике две пересекающиеся царапины. Сами того не подозревая, эти зверюги положили начало человеческой цивилизации и озадачили своим рисунком не одну сотню археологов. Этот древнейший рисунок стал основой псевдографики и вообще всего абстрактного искусства.
Повиснув на ветке заниматься абстрактным искусством было несколько неудобно, и обезьяны спустились на землю. Так появился человек. Первое, что он сделал, - придумал и нарисовал себе предка покровителя - тотем. Каменный век сменился бронзовым, тот железным, железо вытеснил кремний, а традиция рисовать тотем осталась неизменной. Любое скопление людей имеет свой отличительный знак, не отказались от этой привычки и хакерские объединения. Каждая уважающая себя хакерская группа имеет свой логотип. Правда, на камне его никто не выбивает - сейчас есть материалы посовременнее. Но, как и первые рисунки, логотипы хакеров отличаются замысловатостью.
Кто первый придумал использовать алфавит для рисования неизвестно, однако есть предположение, что первым рисунком была картина "Одинокий хакер, вид из космоса" - одна простая точка. Фантазия первого ASCII художника была воистину безгранична, и он стал использовать в своих рисунках не только точку, но и другие знаки препинания, цифры, весь алфавит и кучу других, не менее прикольных символов типа решетки, собаки и черепахи. А с появлением многоцветных мониторов открылась возможность рисовать цветные картинки - ANSI графика.
Итак, если ты не хочешь отстать от жизни, тебе просто необходимо разобраться со всеми ANSI-ASCII заморочками и замутить собственный отвязный логотипчик. Совсем не обязательно вывешивать этот логотип на вскрытых тобой сайтах - логотип отлично подходит для подписей в электронных письмах, для печати на футболках, подарочных чашках и поздравительных открытках.
Что есть что? |
ASCII - American Standard Code for Information Interchange - американский стандартный код для информационного обмена. Введен в 1963 году. Описывает начертание и назначение 128 символов, в том числе и служебных. ANSI - American National Standards Institute - организация, определяющая государственные стандарты в США. Этот институт организован под другим названием в 1918 году. Поддерживается промышленностью США. ANSI X3.64-1979 - Стандарт описывающий способ эмулирования продвинутых терминалов с полноэкранным редактированием. Включает команды перемещения курсора, изменения цвета, очистки экрана и другие. Используется на большинстве BBS. BBS - Bulletin Board System - электронная доска объявлений. Компьютер со специальным софтом для доступа к хранящейся на нем информации посредством модема. HTML - Hyper Text Markup Language - язык разметки гипертекста. Первая версия появилась 1991-1992 году. Предназначен для создания электронных документов, а также для удобного доступа к размещенной в Интернете информации. CSS - Cascading Style Sheets - вложенные таблицы стилей. Технология, появившаяся в 1996-1997 году, позволяет верстать HTML тексты как в типографии - возможность указать цвет, размер, кернинг, интерлиньяж, отступы, выравнивание текста и так далее. |
Нехилую кучу под названием "ASCII арт" можно разгрести несколькими способами. Во-первых, по методу создания картинки. Во-вторых, по тому, статичная или подвижная картинка - с помощью последовательного вывода символов на экран компьютера, можно делать даже небольшие мультфильмы. В-третьих, вся ASCII графика бывает либо двуцветной, либо цветной, вплоть до использования TRUE COLOR.
Каждая ASCII картинка создана с использованием разной изобразительной техники, соответственно есть классификация по модуляции изображения. Ну и конечно, все многообразие текстовых картинок имеет смысл поделить по темам и области применения. Ведь смайлики, логотипы и изображение обнаженной девицы на плакате формата A3 - совершенно различные штуки. А теперь прикинь, сколько бывает видов ASCII арта, если каждая из классификаций не отменяет другую. Цветная анимированная ANSI картинка, созданная с помощью конвертера из анимированного GIF'a может быть нарисована одними лишь точками или выделяться цветом на фоне распечатки JavaScript программы.
Первые конвертеры обрабатывали небольшие строчки текстов, давая на выходе изображение большими буквами. В юниксовых дистрибутивах до сих пор осталась подобная утилита - banner. Использовалась она для стилизованной выдачи сообщений на экран монитора. С распространением растровой графики стали появляться более продвинутые конвертеры, на вход этим монстрам требовалось подавать графические файлы.
ASCII графика нарисованная вручную, с одной стороны проще, а с другой - интереснее. Вручную фотографию девушки не нарисуешь, зато логотипчики и композиции небольшого размера получаются великолепно. Но без конвертеров никогда бы не возникла HTML графика - текстовые картинки, исполненные в TRUE COLOR.
Однако, кроме "чиста ручной" и "чиста автоматической" работы есть и весь спектр промежуточных вариантов. В Инете можно откопать кучу специализированных текстовых редакторов, которые позволяют рисовать псевдографикой в шестнадцати цветах. И часто ASCII картинку, полученную на выходе конвертера, ASCII мастер доводит до кондиции руками.
Нашлись умельцы, которые рисовали в ANSI целые мультфильмы - по адресу http://okcomputer.antiflux.org/~superfly/star-wars-asciimation.html находится почти целиковый сериал "Звездные Войны", исполненный в ANSI графике. Для просмотра ANSI картинок обычный текстовый редактор не подходит - для этого есть специальные гляделки. Здесь ты можешь скачать одну из таких программ. Эта прога кроме всего прочего эмулирует поступление данных с разной скоростью, прям, как будто ты картинку получаешь по модему. Необходимо только в командной строке после имени ANSI файла добавить число от 300 до 19200 - скорость виртуального модема.
У каждого ASCII художника свой стиль рисунков. У каждой программы-конвертера - тоже. Однако если подумать, алгоритмов перевода графики в ASCII картинку не так уж и много.
Самый простой алгоритм работает с черно-белыми картинками (рис. 1) Каждую черную точку входной картинки необходимо заменить символом пробела, а каждую белую - каким либо другим. Например, звездочкой. Вместо пробела и звездочки можно использовать любую другую контрастную комбинацию символов.
Преимущество данного алгоритма в его простоте. Но двуцветное изображение даже в исходном виде не очень впечатляет. При переводе фотографии в двуцветный формат теряется информация о полутенях. Так что, этим способом хорошо обрабатывать только контурную графику.
Текстовая картинка получается гораздо большего размера, нежели исходная - каждая точка увеличивается в 10-12 раз. Такие ASCII произведения клево выглядят начиная с трех метров и далее. На экране монитора их особо не поразглядываешь.
Следующим логическим шагом в улучшении конвертеров стало использование не двух символов, а нескольких, различающихся степенью заполнения знакоместа. Проведи в Фотошопе небольшой эксперимент, - отсканируй страницу текста и примени к полученному изображению фильтр "Blur" - размывание. Размывать нужно до такой степени, чтобы написанное перестало читаться. Главное, не перестарайся - не нужно делать картину "жопа, жопа, кругом одна жопа" - ровное поле черного или серого цвета.
В результате правильного эксперимента ты увидишь рябое поле. А если пойти обратным путем, и заменить каждую точку серого цвета соответствующим ей символом, получится ASCII картинка (рис. 2).
Для создания соответствующей программы надо задать последовательность символов, заменяющую гамму серого. Для большинства рисунков хватает шестнадцати оттенков - шестнадцати букв. Последовательность может быть, например, такой: #@W&HOL?I/=;:-. такой: #$&B%XNO*=+":-. или такой: #M@HX$%+/;:=-,.
Большинство порнографических ASCII картинок создано с использованием именно этого алгоритма. А все потому, что десять лет назад цветных сканеров еще не было, а черно-белые если и были, то были большой редкостью. Использование более шестнадцати букв мало оправдано, так как не всякий кульный хацкор различит большее количество оттенков букв.
Альтернатива ASCII арту |
В то время, как одни хакеры старались рисовать уже имеющимися символами, другие учились работать с системными шрифтами. Если Магомету лень идти к горе, придется передвинуть гору. Появилась противоположность ASCII арту - можно заменить изображение символов в видеопамяти на маленькие кусочки картинки таким образом, что при выводе этих "кирпичиков" на экран получатся правдоподобные изображения. Особенно активно этот метод использовался создателями вирусов. На зараженной машине по панелям Нортона время от времени пробегали чьи-то ноги - это был безобидный вирус Big Foot. Нортоновские утилиты под DOS до сих пор используют рисованный курсорчик мышки - изменяя изображение четырех символов в ASCII таблице. |
Когда букв стало не хватать, половина ASCII художников перешла в ANSI клан. Отличались эти кланы кардинально, - ASCII графика использует только два цвета: черный и белый или черный и зеленый, в зависимости от древности монитора. ANSI же графика использует восемь цветов для фона символов и шестнадцать цветов для самих символов. Особо извращенные ANSI художники рисовали мигающими цветами. Из их клана впоследствии вышли самые страшные рекламщики Интернета. Хит сезона 1991 - мигающие желтые и красные надписи опупенного размера на черном фоне. Примера ради, загляни на порносайтик среднего пошиба, там такой стиль практикуется до сих пор.
Появление Интернета, а если более точно WWW, дало в руки ANSI мастеров еще более страшное орудие. В HTML файле можно использовать не два и даже не шестнадцать цветов, а всю возможную палитру - TRUE COLOR. Великий Тег <FONT COLOR=#RRGGBB> совершил революцию в ASCII графике. Прибавилось еще несколько способов перевести картинку в текст. Самым очевидным алгоритмом перевода является прямая замена каждой точки изображения одним и тем же символом такого же цвета (рис. 3).
С учетом того, что Visual Basic теперь знает каждый продвинутый ламер, конвертеры такого типа расплодились как австралийские кролики в урожайный год. При переводе картинки главное не забыть применить маленькую хитрость: указать броузеру использовать моноширинный шрифт.
Если в DOS'e в текстовом режиме все было просто - знакоместо оно и в Африке знакоместо - все символы одной ширины, то графические операционки добавили заморочек со шрифтами. Почему-то символ пробела стал самым узким, а W, M и другие туалетные символы - шире остальных. Вся строгая картина, когда каждый пиксель знал свое место, полетела к чертовой бабушке. Поэтому простейшую ASCII картинку переведенную в HTML формат нужно заключать в теги <PRE> bla bla bla </PRE>. Только после этого броузеры будут считать, что твоя картинка показывается в стиле "распечатка".
Однако, вместо того, чтобы всю картинку нарисовать одной буквой разных цветов, можно использовать всю ASCII таблицу или даже осмысленный текст. Тут главное опять же не перестараться, буковки должны быть примерно одинаковыми, лучше пользоваться только заглавными. Иначе изображение будет отстойно смотреться - все в черных колдобинах и выбоинах.
Текстовые HTML картинки можно нарисовать в виде распечаток программ на JavaScript или Perl'e. Да, если захочешь создать нечто супер редкое и убойное произведение - найди в старых запасниках дедушки программиста распечатки на Prolog'e, Ada или Fortran'e - то-то народ голову поломает. Одним из применений подобных HTML картинок являются всяческие проздравления. Подумай, как будет рада твоя подруга, когда ты ей пришлешь любовное послание, на котором цветом будет изображена какая-нибудь розочка или сексапильная японочка. А если неохота писать длинное послание, фоном можно пустить отрывок из "Эммануэли". Интересный вечер тебе и твоей подруге гарантирован!
Танки грязи не боятся, как говорилось в одной рекламе, а фанаты ASCII арта не боятся геморроев на свою сидушку. Возможности цветов DOS'a ограничиваются шестнадцатью вариантами. Хочется же и в классическом стиле остаться (HTML MUST DIE) и оттенков иметь побольше. И придумали тогда комбинированный подход - каждый из шестнадцати цветов растянули в гамму символов от самого яркого до черного. Оттенки симулируются как во втором алгоритме - "#" самый яркий, "." - самый темный. В итоге, процесс создания ANSI картинки состоит из двух стадий. На первой стадии подбирается наиболее похожий цвет из палитры в 256 цветов, а на второй вычисленный цвет заменяется необходимым символом досовского цвета (рис. 4).
Если соберешься писать программу-конвертер, используя этот алгоритм, ты можешь не задумываться на счет сравнения двух цветов. Проще всего сравнение проводить покомпонентно - как известно любой цвет в понимании компьютера получается из трех составляющих: красной, синей и зеленой. Чем меньше разница между соответствующими компонентами двух цветов, тем больше они похожи.
Несмотря на некоторую замороченность этого способа, ASCII картинки получаются отменные. И самое главное, используя этот конвертер, ты сможешь обрабатывать полноцветные картинки, получая вполне достойные ANSI произведения.
Еще одним нетрадиционным методом решил воспользоваться создатель переводилки ICO файлов в ANSI формат. У стандартных иконок есть два очень хороших параметра - во-первых, они маленького размера - 16х16 точек. А во-вторых, в них используется ровно 16 цветов, причем палитра почти полностью совпадает с ДОСовской.
Для перевода ICO в ANSI графику был использован хитрый прием - каждое знакоместо заменяет пару точек исходной иконки. Таким образом, решается вопрос растяжения изображения в текстовом виде по вертикали, - виртуальная точка стала размером 8х8 пикселей.
Принципиальным ограничением данного метода является невозможность точного отображения двух соседних по вертикали точек ярких цветов. Вся проблема в том, что в текстовом режиме фон символа не может использовать добрую половину цветов - 8 цветов для фона и 16 цветов для отображения символа.
По определению, ASCII графика - это вид изобразительного искусства, в котором используются ASCII коды. Как ты уже понял, изображение можно строить не только различными символами, но и цветом. Однако и этого мало - один совершенно безбашенный чувак придумал рисовать картинки символами разного размера (рис. 5).
В обычном текстовом файле такая маза, конечно, не прокатит. Только с большого перепою. Но в HTML это уже реально. Самый крупный размер будет соответствовать наиболее яркому цвету, самый маленький - темному фону. Соответственно, без труда будет переводиться графика в тонах серого цвета. Как и при модуляции цветом, при модуляции размером символа можно использовать не одну букву, а две, четыре или даже осмысленный текст. Самой известной картиной подобного рода является портрет Вовочки, нарисованный мелким текстом из его собственных трудов. Ленин - профиль в пол оборота, текст, - вроде из восемнадцатого тома. Самое прикольное было в том, что портрет был нарисован тушью на бумаге. Вот что бывает, когда фэн ASCII графики остается без компьютера.
Опять же, если ты любитель геморроев, то можешь попробовать совместить рисование буквами разного размера с раскрашиванием получившейся картинки. Кстати, тут тебя ждет махонькое западло: в HTML символы разного размера даже будучи напечатанными моноширинным шрифтом имеют разную ширину. Поэтому, если не предпринять специальных усилий по форматированию текста, вся картинка накроется медным тазом. Специальные меры заключаются в следующем - можно либо прописать посредством CSS стиль с фиксированным размером знакоместа, либо поместить каждую букву в отдельную ячейку большой таблицы.
У всех только что описанных алгоритмов есть общий врожденный недостаток. За редким исключением, каждая точка исходного изображения заменяется одной буквой. А ширина текстового экрана всего 80 символов. Ну, допустим, в HTML можно уменьшить шрифт раза в два, но все равно - максимальная ширина исходной картинки будет максимум полторы сотни пикселей. А что можно в этих полутора сотнях нарисовать? Попробуй уменьшить свою фотографию до такого размера и немного размыть - могу поспорить, теперь тебя мало кто узнает! А особенно после перевода в ASCII формат.
Но даже если тебя сожрал злобный суслик, остается два выхода. В случае с ASCII графикой можно либо рисовать руками, либо использовать конвертеры второго поколения. Эти программы не тупо заменяют каждый пиксель исходного изображения, - нет, они обрабатывают сразу целый фрагмент картинки. Очередной пакет X*Y пикселей сравнивается по начертанию с каждым символом ASCII таблицы. В результате подбирается наиболее похожий символ, и программа начинает обрабатывать следующий кусок изображения (рис. 6). Размеры обрабатываемого за раз куска зависят от того, каким шрифтом будет рисоваться ASCII картинка.
Подобный алгоритм используют все программы распознавалки текстов. Однако, при сравнении "в лоб" - точка в точку, результаты работы будут хреновые. Для более точного распознавания применяют метод размывания. Знаешь, почему близорукие перцы неразборчивы в подругах? Попробуй прищурить глаза, - все вокруг станут похожими друг на друга. А если прищуришься очень хорошо, то перестанешь видеть разницу между Клавой Шиффер и престарелой лифтершей из соседнего подъезда. То же самое происходит с программой, которая сравнивает размытые очертания очередного символа с фрагментом изображения.
Раскрашивание в конвертерах второго поколения устроено немного сложнее. Тут есть несколько вариантов - можно либо присвоить символу наиболее часто встречающийся цвет, либо раскрасить его в нечто среднее для всего знакоместа (рис. 7). Аналогом подобного процесса будет уменьшение картинки в Фотошопе раз в десять разными алгоритмами интерполяции - "по соседним" и "трилинейная фильтрация". В первом случае Фотошоп будет использовать уже существующие цвета, а во втором наколдует кучу полутонов.
Ты наверняка замечал, что большое количество ASCII картинок выглядят сжатыми по горизонтали. Это вовсе не говорит о том, что у создателя подобного произведения монитор побывал под прессом. Просто эти картинки рисовались не для просмотра на дисплее, а для печати на стандартном принтере.
Так вот, при создании любой ASCII картинки приходится учитывать, для какого девайса она предназначена. Бороться с этим можно следующим образом: перед переводом изображения в ASCII формат его нужно растянуть в том же Фотошопе по горизонтали примерно в полтора раза.
Если ты рисуешь HTML картинку, то заморочек с пропорциями уже меньше. Есть такая фишка, называется интервалы - расстояние между символами. С помощью того же CSS можно указать броузеру необходимое значение интервалов, чтобы ASCII графику не плющило.
Псевдо ASCII арт |
Самые ленивые хакеры ленились даже использовать конвертеры и для создания текстовых картинок использовали обычные графические редакторы. Именно они придумали забавный способ получения текстовой картинки из самой обычной фотографии (потому, как рисовать свой рисунок - лень). Методика создания следующая - в любом продвинутом графическом редакторе нужно напечатать много текста, выделить все буквы, и вставить на выделенное место фотографию. Фактически, все буквы раскрасятся в цвета, соответствующие фотографии - каждая буковка станет небольшим кусочком изображения. Однако, получившееся произведение называться ASCII графикой не может - каждая буква имеет не один цвет, а чуть ли не камуфляжную раскраску. |
Между прочим, смайлики тоже являются ASCII артом. Только придумали это направление совсем ленивые хацкоры. Большинство смайликов состоит всего из пары символов. Хотя среди них тоже находятся достойные экземпляры - "жопа с ручкой" - (_!_)] или "хитрая жопа" - (_:)_). Кто бы тебе ни говорил, что смайлик-улыбка рисуется совершенно определенным образом, - не верь провокаторам! Каждая нарисованная тобой рожица уникальна, стоит только перестать использовать лишь двоеточие и скобку, взяв на вооружение всю ASCII таблицу. Смайлики - одно из бытовых применений ASCII графики, другое же направление - информационные файлы.
Ты наверняка замечал на пиратских компактах в архивах со взломанными программами не опозноваемые виндами файлы с расширением NFO. Это файлы-подписи хакерских и варезных групп. Почти в каждом таком файле находится ASCII логотип группы, ее контактные адреса и списки участников группы. Часто в пиратском архиве находится несколько таких NFO-файлов. Это значит, что покуда программа дошла до тебя, она была бережно передана не один раз - блюстители закона начеку, и стырить программу становится все сложнее. Часто под ASCII логотипом находится лишь краткая подпись: "Passed thru…" - "Прошло через…"
Огромный "культурный пласт" ASCII графики составляет ASCII порно. Чаще всего это файлы для печати на широкоформатном принтере. После распечатки получается плакат длинной метр с лишним с полуголой или совершенно обнаженной девицей с нехилыми буферами. На сайте TEXT FILES есть большая подборка ASCII порнушки. Конечно, конкуренции качественной цветной фотографии эти картинки не составляют. Но с другой стороны, их можно повесить на стену рядом с компьютером. И это будет круто. А вот если ты повесишь картинку, списанную с сайта Плейбоя, то это будет сакс.
ASCII арт широко используется в оформлении BBS'ок, тут его используют по нужде - все широко распространенные терминальные программы имеют только текстовый интерфейс. Большинство BBS'ок, если ты конечно попал не на самую отстойную, имеет хотя бы ASCII заставку. А самые крутые оформлены ASCII графикой вплоть до самой захудалой менюшки.
Иногда очередного ASCII художника переклинивает, и тогда появляются большие коллекции текстовых ежиков, коров, сов, космонавтов и других странных созданий. Каждого клинит по своему. Подборки ежиков могут достигать нескольких сотен килобайт - ежики веселые, грустные, здоровые, с похмелья, дохлые, реанимированные, военные, реактивные и стелс-ежики - количество вариантов зависит только от степени переклина владельца коллекции.
Знание - сила, как говорил кто-то, не вылезая из бочки. Теперь ты знаешь, как сделать крутую подпись для любимой мыльницы. Запоминающийся ASCII логотип - первое требование не только к хакерской группе, но и к любому креативному человеку интересующемуся компьютерами. Умение оставить хорошее впечатление ценится не только в хакерской среде, а стильная надпись из буковок - один из самых надежных способов произвести неизгладимое впечатление. И тогда станет возможной любовь "с первого e-mail'a".