2014-01-24 67 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

感謝您的鏈接;) –