Визуализация портфолио 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.
Мы реализовали этот алгоритм для университетского проекта.
Как работает этот алгоритм.
- Вычислить ограниченную ячейку шрифта, который вы используете.
- Возьмите этот BBox и переместите его поверх своего изображения.
- (будет объяснено на шаге 7. проверьте используемое изображение с текущим BBox.Есть ли свободное место в BBox для печати (все пиксели должны быть белыми)? Если да, переходите к шагу 4. иначе переместите BBox дальше.)
- Вычислить среднее значение этого BBox
- Вычислить дисперсию этого BBox
- Используйте порог, который определяет, печатаем ли мы или нет (дисперсия низкая → мы печатаем, иначе мы перемещаем BBox)
- Если мы напечатаем текст, напечатайте его с помощью цвета (результат результата) на изображении результата и на втором полностью белом изображении, называемом используемым изображением, которое поможет нам проверить, были ли мы уже напечатаны в этой области. На этом использованном изображении мы печатаем черным цветом.
- Обновите свои параметры, это означает, что шаг за шагом уменьшает размер шрифта до достижения конечного конечного условия (например, currentFontSize> minFontSize).
- Повторите (перейдите к шагу 1.) до достижения конечного состояния.