Визуализация портфолио Word

Я остановился на этой визуализации и назвал Word Portrait:

enter image description here

Мой вопрос: как это сделать? Есть ли учебник или документ, который описывает это?

Ответ 1

Я новичок видел это, но я сделал растровое изображение для конвертера ASCII в прошлом, что похоже. поэтому, с моей точки зрения, я вижу это так:

  • возьмите серо-масштабное изображение и сегментируйте его (по прямоугольным областям с фиксированным соотношением сторон)

    Соотношение сторон определяется входной текстовой фразой и используемым шрифтом. Это даст вам список прямоугольников со схожими цветами, чтобы вычислить средний цвет для них. Также хорошей идеей является ограничение минимального и максимального размера сегментов

    • слишком маленькие прямоугольники нечитаемы
    • слишком большие прямоугольники уродливы (см. самый большой GENIUS)
  • заменить сегменты прямоугольника текстом

    Размер шрифта ограничен заполненной областью (размером прямоугольника), чтобы текст в нее вписывался. Средний цвет текста должен быть таким же, как средний цвет сегмента прямоугольника

    text_color=rectangle_avg_color*(ink_pixels+paper_pixels)/ink_pixels
    

    ink_pixels и paper_pixels - количество пикселей в текстовой фразе. Если вы хотите реализовать цветные изображения, тогда просто вычислите значения R, G, B отдельно и смешайте их вместе или сегментируйте по цветам и интенсивности сразу

Смотрите Изображение в ASCII Art conversion, это может помочь вам получить некоторые новые идеи...

Ответ 2

Проверьте мой репозиторий Github: ArtWork.

Мы реализовали этот алгоритм для университетского проекта.

Как работает этот алгоритм.

  1. Вычислить ограниченную ячейку шрифта, который вы используете.
  2. Возьмите этот BBox и переместите его поверх своего изображения.
  3. (будет объяснено на шаге 7. проверьте используемое изображение с текущим BBox.Есть ли свободное место в BBox для печати (все пиксели должны быть белыми)? Если да, переходите к шагу 4. иначе переместите BBox дальше.)
  4. Вычислить среднее значение этого BBox
  5. Вычислить дисперсию этого BBox
  6. Используйте порог, который определяет, печатаем ли мы или нет (дисперсия низкая → мы печатаем, иначе мы перемещаем BBox)
  7. Если мы напечатаем текст, напечатайте его с помощью цвета (результат результата) на изображении результата и на втором полностью белом изображении, называемом используемым изображением, которое поможет нам проверить, были ли мы уже напечатаны в этой области. На этом использованном изображении мы печатаем черным цветом.
  8. Обновите свои параметры, это означает, что шаг за шагом уменьшает размер шрифта до достижения конечного конечного условия (например, currentFontSize> minFontSize).
  9. Повторите (перейдите к шагу 1.) до достижения конечного состояния.