2014-01-24 25 views
1

我已经被赋予使用Delphi实现Identicon的任务。我搜查了互联网,仍然没有找到任何东西。 那么我从哪里开始,有没有人可以给出解释?如何在Delphi中生成Identicon

+0

http://blog.stackoverflow.com/2008/06/gravatars-identicons-and-you/ –

+1

有许多网页讨论他们,如果你做网络搜索。有些东西告诉我,你真正想要的是一些代码。 –

+0

而LURD的维基百科页面链接包含源代码链接。它真的让我觉得你应该更努力。 –

回答

19

这只是一个解释给你的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 \ │ 
└─────┴─────┴─────┴─────┘ 

这里的要点是减少到易于处理的小零件。

+5

+1漂亮.. –

+0

完美!这些信息是我需要的。谢谢。 –

1

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

最初它是为了显示即将到来的2.0版本中的一些新的矢量图形功能。尽管如此,这还没有发布,源代码已经可以通过中继库中的代码进行编译。

+0

感谢您的链接;) –