Как создать Identicon в Delphi
Мне дали задание реализовать Identicon
используя Delphi. Я искал в интернете и до сих пор ничего не нашел. Итак, с чего мне начать, есть ли здесь кто-то, кто может дать объяснение?
2 ответа
Это просто объяснение, чтобы дать вам представление об идентиконах.
Идентификаторы представляют собой графическое представление группы байтов, наиболее вероятно хэш-значение.
Давайте возьмем примерное значение хеша MD5 (16 байт)
abf5787309f3c4d5b255237c0b67dd5e
Хорошо, пусть они устроят по-другому
ab f5 78 73 09 f3 c4 d5 b2 55 23 7c 0b 67 дд 5д
Теперь у нас есть 16 полей, каждое из которых представляет байт. Таким образом, мы могли бы создать изображение с 256 различными маленькими изображениями. Но, возможно, мы можем разбить его на менее сложный метод.
Давайте возьмем один байт (первый ab) и его двоичное представление
10101011
Хорошо, пусть они по-другому устроятся: о)
10 10 10 11
Теперь у нас есть 4 поля, и каждое поле может иметь одно из четырех состояний. И это очень легко управлять 4 различными изображениями.
00 = пусто 01 = / 10 = \ 11 = Х
Вернемся к нашему байту, мы получим это
┌─────┐ │ \ \ │ X \ X │ └─────┘
И обратно ко всему мы получаем
┌─────┬─────┬─────┬─────┐ │ \ \ │ XX │ / X │ / X │ │ \ X │ / / │ \ │ X │ ├─ ────┼─────┼─────┼─────┤ │ │ X │ X │ X / │ │ \ / │ X │ / │ / / │ ├─────┼ ─────┼─────┼─────┤ │ \ X │ / / │ \ │ / X │ │ \ │ / / │ X │ X │ ├─────┼─── ──┼─────┼─────┤ │ │ / \ │ X / │ / / │ │ \ X │ / X │ X / │ X \ │ └─────┴──── ─┴─────┴─────┘
Все дело здесь в том, чтобы уменьшить количество мелких деталей.
Однажды я начал портировать оригинальную библиотеку на Delphi / Graphics32. Однако я так и не нашел время закончить небольшой проект до сих пор. Исходный код вместе с примером приложения можно найти на моем сайте (см. Delphi -> Graphics32).
Первоначально он должен был показать некоторые новые функции векторной графики из будущей версии 2.0. Несмотря на то, что это до сих пор не выпущено, исходный код уже может быть скомпилирован с кодом в ствольном репозитории.