Как ASCII-творчество отображает работу алгоритмов преобразования? [закрытый]

Да, этого можно ожидать время от времени. В то время как new резервирует место для данных, delete просто делает недействительным указатель, созданный с помощью new, позволяя записывать данные в ранее зарезервированных местах; он не обязательно удаляет данные. Однако вы не должны полагаться на это поведение, поскольку данные в этих местах могут меняться в любое время, что может привести к неправильной работе вашей программы. Вот почему после использования delete указателя (или delete[] в массиве, выделенном с помощью new[]), вы должны назначить ему NULL, чтобы вы не могли вмешиваться в неправильный указатель, если вы не будете выделите память с помощью new или new[] перед повторным использованием этого указателя.

55
задан Ali Afshar 27 December 2008 в 12:43
поделиться

4 ответа

Понятие большого уровня изображения просто:

  1. Каждому печатаемому символу можно присвоить приблизительное полутоновое значение; "в" знаке @, очевидно, является визуально более темным, чем "плюс" знак +, например. Эффект будет варьироваться, в зависимости от шрифта и располагающий с интервалами на самом деле используемый.

  2. На основе пропорций выбранного шрифта, сгруппируйте входное изображение в прямоугольные пиксельные блоки с постоянной шириной и высотой (например, прямоугольник 4 пикселя шириной и 5 пикселей высотой). Каждый такой блок станет одним символом в выводе. (Используя пиксельные блоки, просто упомянутые, изображение 240w-x-320h стало бы 64 строками 60 символов.)

  3. Вычисляют среднее полутоновое значение каждого пиксельного блока.

  4. Для каждого пиксельного блока, выберите символ, полутоновое значение которого (от шага 1) является хорошим приближением пиксельного среднего числа блока (от шага 3).

Это - самая простая форма осуществления. Более сложная версия также возьмет фактическое формы из символов во внимание при повреждении связей среди кандидатов на пиксельный блок. Например, "наклонная черта" (/) была бы лучшим выбором, чем "наклонная черта влево" (\) для пиксельного блока, который, кажется, имеет функцию контраста bottom-left-to-upper-right.

94
ответ дан joel.neely 7 November 2019 в 17:11
поделиться

Также можно смотреть на телефон libcaca (последний выпуск 2014), который соответственно к их веб-сайту имеет следующие улучшения по сравнению с aalib:

  • поддержка Unicode
  • 2 048 доступных цветов (некоторые устройства могут onlyhandle 16)
  • размывание цветных изображений
  • усовершенствованные текстовые операции холста (блитирование, вращения)
12
ответ дан Brian Burns 7 November 2019 в 17:11
поделиться

Я нашел этот статья CodeProject записанный Daniel Fisher содержащий простое реализация C# из изображения к алгоритму преобразования ASCII-творчества.

Это шаги, которые выполняет программа/библиотека:

  1. Загрузка поток Изображения к растровому объекту
  2. Шкала полутонов битовый массив с помощью Графического объекта
  3. Цикл через пиксели изображения (потому что мы не хотим одного символа ASCII на пиксель, мы берем один на 10 x 5)
  4. , Чтобы позволить каждому пикселю влиять на получающийся символ ASCII, мы циклично выполняем их и вычисляем яркость суммы текущих 10 x 5 блоков.
  5. Наконец, добавьте различные символы ASCII, базирующиеся для текущего блока на расчетной сумме.

Довольно легкий, не так ли?

BTW: В комментариях к статье я нашел этот прохладная реализация AJAX : Генератор ASCII-ТВОРЧЕСТВА Gaia Ajax :

[...] я чувствовал себя вынужденным продемонстрировать, что это могло легко быть сделано в стандартизированном наборе веб-технологий. Я намеревался видеть, мог ли я найти, что некоторые библиотеки использовали, и я нашел codeproject статью Sau Fan Lee о его ASCII fying библиотекой.NET.

P.S.: Lucas (см. комментарии) нашел другой статья .

CodeProject
7
ответ дан splattne 7 November 2019 в 17:11
поделиться

aalib (последний выпуск в 2001) является библиотекой ASCII-творчества с открытым исходным кодом, это используется в приложениях как mplayer. Можно хотеть проверить его исходный код, чтобы видеть, как это делает это. Кроме этого, эта страница описывает более подробно о том, как работают такие алгоритмы.

16
ответ дан Brian Burns 7 November 2019 в 17:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: