<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 閱讀(765) 評論(0)  編輯  收藏 所屬分類: .Net
    主站蜘蛛池模板: 免费特级黄毛片在线成人观看 | 国产青草视频免费观看97| 亚洲无人区视频大全| 日韩人妻一区二区三区免费| 亚洲大尺度无码无码专区| 日本在线看片免费| 亚洲欧洲综合在线| 成人无遮挡裸免费视频在线观看| 亚洲综合久久1区2区3区| 国产免费丝袜调教视频| 亚洲AV成人影视在线观看| 在线播放免费人成视频在线观看| 亚洲国产成人精品无码区二本| 国产高清免费在线| 丁香花在线观看免费观看图片| 亚洲中文字幕第一页在线 | 亚洲精品蜜桃久久久久久| 国产免费网站看v片在线| 日韩精品亚洲人成在线观看 | 色网站在线免费观看| 亚洲精品国产精品乱码不卡| 巨胸狂喷奶水视频www网站免费| 亚洲日韩aⅴ在线视频| 182tv免费视视频线路一二三| 亚洲人成77777在线播放网站不卡 亚洲人成77777在线观看网 | 免费毛片在线看片免费丝瓜视频| 亚洲精品亚洲人成在线| 亚洲精品视频在线看| 中文字幕无码日韩专区免费| 亚洲精品国产专区91在线| 全免费a级毛片免费**视频| 国产精品福利片免费看| 亚洲第一香蕉视频| 国产成人综合久久精品免费| 免费久久人人爽人人爽av| 国内精品久久久久影院亚洲| 亚洲一级片免费看| 在线观看H网址免费入口| 成年大片免费视频播放一级 | 97久久精品亚洲中文字幕无码| 最新猫咪www免费人成|