如何在Delphi中生成Identicon

时间:2014-01-24 08:00:09

标签: delphi using identicon

我被赋予了使用Delphi实现Identicon的任务。我搜索过互联网但仍然没有找到任何东西。 所以我从哪里开始,这里有人可以给出解释吗?

2 个答案:

答案 0 :(得分:21)

这只是一个解释,可以为您提供Identicons的主张

Identicons是一堆字节的图形表示,很可能是一个哈希值。

让我们取一个样本MD5哈希值(16字节)

abf5787309f3c4d5b255237c0b67dd5e

好的,让他们以不同的方式安排

ab f5 78 73
09 f3 c4 d5
b2 55 23 7c
0b 67 dd 5e

现在我们有16个字段,每个字段代表一个字节。因此,我们可以使用256个不同的小图像构建图像。但也许我们可以将其分解为一种不太复杂的方法。

让我们取一个字节(第一个 ab )及其二进制表示

10101011

好的,让他们以不同的方式安排:o)

10 10
10 11

现在我们有4个字段,每个字段可以有四种状态之一。这很容易管理4个不同的图像。

00 = empty
01 = /
10 = \
11 = X

回到我们的字节,我们将得到这个

┌─────┐
│ \ \ │
│ \ X │
└─────┘

回到整体我们得到

┌─────┬─────┬─────┬─────┐
│ \ \ │ X X │ / X │ / X │
│ \ X │ / / │ \   │   X │
├─────┼─────┼─────┼─────┤
│     │   X │ X   │ X / │
│ \ / │ X   │ /   │ / / │
├─────┼─────┼─────┼─────┤
│ \ X │ / / │   \ │ / X │
│   \ │ / / │   X │ X   │
├─────┼─────┼─────┼─────┤
│     │ / \ │ X / │ / / │
│ \ X │ / X │ X / │ X \ │
└─────┴─────┴─────┴─────┘

这里的重点是减少易于处理的小部件。

答案 1 :(得分:1)

我曾经开始将原始库移植到Delphi / Graphics32。但是,到目前为止,我还没有时间完成这个小项目。可以在my website (see Delphi -> Graphics32)上找到源代码和示例应用程序。

最初它的目的是展示即将推出的2.0版本中的一些新的矢量图形功能。尽管事实上还没有发布,但源代码已经可以使用trunk存储库中的代码进行编译。