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

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

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

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

    附Bitmap實現代碼
    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 閱讀(764) 評論(0)  編輯  收藏 所屬分類: .Net
    主站蜘蛛池模板: 国产无遮挡吃胸膜奶免费看| 免费福利视频导航| 一级毛片直播亚洲| 日韩国产欧美亚洲v片 | a级毛片免费全部播放无码| 亚洲 另类 无码 在线| 国产91成人精品亚洲精品| 精品国产免费观看久久久 | 校园亚洲春色另类小说合集| 黄网址在线永久免费观看| 亚洲av无码专区青青草原| 日本人的色道www免费一区| 国产精品亚洲色图| 亚洲中文字幕丝袜制服一区| 暖暖免费在线中文日本| 亚洲午夜未满十八勿入| 亚洲一区二区三区免费视频| 亚洲一区欧洲一区| 在线观看亚洲免费视频| www在线观看免费视频| 亚洲色欲色欲www在线丝 | 亚洲AV永久无码精品成人 | 处破痛哭A√18成年片免费| 亚洲aⅴ无码专区在线观看春色| 亚洲成aⅴ人片久青草影院| 国产一级高青免费| 亚洲精品国产免费| 国产一级做a爱免费视频| caoporn成人免费公开| 亚洲免费在线播放| 免费无码A片一区二三区| 国产综合成人亚洲区| 国产成人精品日本亚洲| 成年免费大片黄在线观看岛国| 色视频在线观看免费| 亚洲成人精品久久| 国产高清免费观看| 久久九九AV免费精品| 亚洲aⅴ无码专区在线观看| 亚洲精品无码鲁网中文电影| 欧美男同gv免费网站观看|