<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 閱讀(777) 評論(0)  編輯  收藏 所屬分類: .Net
    主站蜘蛛池模板: 日韩在线视频免费| 亚洲自偷自偷图片| 亚洲一区动漫卡通在线播放| 久久精品一区二区免费看| 亚洲自偷自偷偷色无码中文| 97国免费在线视频| 国产精品亚洲综合| 日本特黄特色免费大片| 亚洲日韩精品无码专区加勒比☆| 国内免费高清在线观看| 学生妹亚洲一区二区| 在线成人a毛片免费播放| 亚洲成a∨人片在无码2023| 国产免费卡一卡三卡乱码| 青草青草视频2免费观看| 亚洲精品第一国产综合境外资源| 免费精品久久久久久中文字幕| 亚洲综合精品网站在线观看| 男女一边桶一边摸一边脱视频免费| 亚洲精品成人无限看| 无码少妇精品一区二区免费动态| 亚洲黄网在线观看| 大学生一级特黄的免费大片视频 | 人成电影网在线观看免费| 久久亚洲中文字幕精品一区| 亚洲乱码日产精品BD在线观看| 国产h视频在线观看免费| 狠狠入ady亚洲精品| xx视频在线永久免费观看| 亚洲人精品亚洲人成在线| 免费大学生国产在线观看p| 韩国免费A级毛片久久| 亚洲欧洲第一a在线观看| 免费人成视频在线| 成人特级毛片69免费观看| 亚洲第一福利网站| 白白国产永久免费视频| 大地资源网高清在线观看免费| 亚洲一级片在线观看| 精品国产人成亚洲区| 黄页网站免费观看|