Как образ пользователя с идентификатором генерируется на SO?
Мне немного любопытно, какие милые маленькие калейдоскопические изображения, связанные с каждым пользователем на этом сайте. Как они генерируются? Возможности:
- Список изображений уже есть в некоторой папке, и он выбирается случайным образом.
- Изображение генерируется всякий раз, когда пользователь регистрируется.
В любом случае, меня больше интересует, какой алгоритм используется для генерации таких изображений.
6 ответов
Это называется Identicon. Если вы ввели адрес электронной почты, это основано на хэш-адресе вашего адреса электронной почты. Если вы не указали адрес электронной почты, он зависит от вашего IP-адреса.
Джефф опубликовал некоторый код.NET для создания идентификаторов на основе IP.
Обычно он генерируется из хеша имени пользователя, адреса электронной почты или IP-адреса.
Stackru использует Gravatar для создания изображений.
Насколько я знаю, идея пришла от Дона Паркс, который пишет о технике, которую он использует.
IIRC, он генерируется с IP-адреса.
"IP Hashing", я думаю, это называется.
Я помню, как читал об этом в блоге; он сделал код доступным для скачивания. Однако я понятия не имею, откуда это.:(
Изображения создаются Gravatar и их подробности описаны здесь, однако, они не раскрывают, как они это делают.
Я полагаю, что изображения представляют собой сетку 4×4, верхняя сетка 2×2 повторяется 4 раза по часовой стрелке, каждый раз при повороте на 90 градусов, снова по часовой стрелке. Кажется, что два цвета выбираются случайным образом, и каждый блок 1×1 выбирается из предварительно определенного набора.
РЕДАКТИРОВАТЬ: очевидно, мой ответ был специальным. Приятно знать об идентификаторах.
Попробуйте это: http://www.docuverse.com/blog/9block?code=(32-bit integer) 8 & size = (16 | 32 | 64)
подставляя соответствующие числа для элементов в скобках.
Бьюсь об заклад, каждому крошечному изображению плитки предоставляется набор других изображений плитки, с которыми он выглядит хорошо. Думайте о графике с плитками как узлы. Вы выбираете случайный узел для угла и заполняете его соседние места партнерами, затем поворачиваете его и применяете один и тот же шаблон четыре раза. Затем выберите цвет.
Вместо графика это также может быть квадратная матрица, в которой каждая строка представляет изображение, каждый столбец представляет изображение, а значения ячеек являются весами.