<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    概述Identicon 是 Don Park 在2007年首次想出的。也許有些人對(duì)“Identicon”這詞比較陌生,其實(shí)大家都認(rèn)識(shí)的——就是在GitHub、Stack Overflow、V2EX還有Slack上的那種看似隨機(jī)又有規(guī)律還不重樣的默認(rèn)頭像。一般的,如果你在一個(gè)網(wǎng)站注冊(cè)后沒有指定自己的頭像,網(wǎng)站會(huì)使用 Gravatar 或者 Identicon 作為你的默認(rèn)頭像。Gravatar 大多都是千篇一律,Identicon 卻千姿百態(tài)。
    原理wiki 上說,最初的 Identicon,通常是將用戶的IP地址哈希成可視化的,由9塊圖像構(gòu)成的圖形,服務(wù)器通過 Identicon,就能夠以頭像的形式來分辨用戶,這種方法同時(shí)也能保護(hù)用戶的隱私。后來,由第三方將其表現(xiàn)形式擴(kuò)展至了各種圖形,于是就有了大家看到的不同風(fēng)格的 Identicon 頭像。
    實(shí)現(xiàn)拿 Github 來說吧,在 GitHub 的 Blog 上有對(duì) Identicon 過程做了簡(jiǎn)單的介紹,他們是將用戶的ID取哈希值,然后根據(jù)哈希值每一位的奇偶來決定對(duì)應(yīng)位置上的像素的開關(guān)。這樣生成 的圖像,配上由哈希值決定的顏色,保證可生成大量獨(dú)一無二的圖像。有個(gè) Mathematica 的實(shí)現(xiàn),感興趣的戳。

    附Bitmap實(shí)現(xiàn)代碼
    public BitmapSource GenerateIdenticon(Object value)
    {
        int width = 9;
        int height = width;
        int stride = (PixelFormats.Indexed8.BitsPerPixel * width) / 8;
        byte[] pixels = new byte[height * stride];
        int hash = value.GetHashCode();
     
        BitmapPalette myPalette = new BitmapPalette(new Color[] { Colors.White, Colors.LightGray, Colors.LightSeaGreen, Colors.White });
     
        for (int y = 0; y < 5; ++y)
         for (int x = y; x < 5; ++x)
         {
             byte color = (byte)(hash & 0x03);
            hash >>= 2;
     
            // II quadrant
            pixels[x + (y * stride)] = color;
            pixels[y + (x * stride)] = color;
     
            // I quadrant
            pixels[(8 - x) + (y * stride)] = color;
            pixels[(8 - y) + (x * stride)] = color;
     
            // III quadrant
            pixels[x + ((8 - y) * stride)] = color;
            pixels[y + ((8 - x) * stride)] = color;
     
            // IV quadrant
            pixels[(8 - x) + ((8 - y) * stride)] = color;
            pixels[(8 - y) + ((8 - x) * stride)] = color;
         }
     
        return BitmapSource.Create(width, height, 96, 96, PixelFormats.Indexed8, myPalette, pixels, stride);
    }
    posted on 2018-05-19 10:33 Ying-er 閱讀(777) 評(píng)論(0)  編輯  收藏 所屬分類: .Net
    主站蜘蛛池模板: 国产麻豆一精品一AV一免费| 人妻免费久久久久久久了| 亚洲国产成人久久精品软件 | 美丽的姑娘免费观看在线播放 | 日韩亚洲国产高清免费视频| 国产一区二区三区免费观在线| 日韩午夜免费视频| 亚洲欧洲日韩综合| 99爱在线精品视频免费观看9| 久久久无码精品亚洲日韩软件| 亚洲AV永久无码天堂影院| 免费无码黄网站在线看| 免费v片在线观看品善网| 亚洲精品GV天堂无码男同| 亚洲综合伊人久久综合| 国产又黄又爽胸又大免费视频 | 亚洲精品久久无码| 亚洲AV成人无码久久精品老人| 久久国产美女免费观看精品| 国产专区一va亚洲v天堂| av无码久久久久不卡免费网站| 亚洲伊人tv综合网色| 久久成人免费大片| 亚洲午夜国产精品| 成人超污免费网站在线看| 亚洲色偷偷色噜噜狠狠99| 四虎影视在线永久免费观看| 污污视频免费观看网站| 在线亚洲精品自拍| 女人18毛片特级一级免费视频 | 日本免费xxxx| 国产精品亚洲自在线播放页码 | 午夜视频免费观看| 1000部免费啪啪十八未年禁止观看| 成在线人直播免费视频| 亚洲一区二区三区写真 | 99re6在线精品免费观看| 亚洲视频.com| 在线观看免费成人| 18禁男女爽爽爽午夜网站免费 | 亚洲精品99久久久久中文字幕 |