头像生成_钉钉头像生成 - CSDN
精华内容
参与话题
  • 3D头像生成软件,用照片生成3d头像模型,建个自己的3d头像-3D头像生成器 1,软件可以随机或者从照片创建三维立体的真实的人类面孔,逼真的制作出人物丰富的面部表情,并可以把制作好的表情模型导入C4D、3dMax、Maya...
  • /** * Author: Seven Yu * E-Mail: dofyyu (at) gmail.com * Version: 0.0.3 * Update: 2012/11/14 */ $rand = true; $cache = true; $time = $rand ? time() : 0;...$name = isset($_GET['name'])
    <?php
    
    /**
     * Author:  Seven Yu
     * E-Mail:  dofyyu (at) gmail.com
     * Version: 0.0.3
     * Update:  2012/11/14 
     */
    
    $rand = true;
    $cache = true;
    
    $time = $rand ? time() : 0;
    $name = isset($_GET['name']) ? trim($_GET['name']) : $time;
    $name = empty($name) ? $time : $name;
    $code = isset($_GET['code']) ? $_GET['code'] : md5($name);
    
    if(preg_match('/^[0-9a-f]{32}$/i', $code) == 0)
    {
        $code = md5($time);
    }
    
    $assets = array(
        array('name' => 'bg',    'count' => 30),
        array('name' => 'face',  'count' => 10),
        array('name' => 'eye',   'count' => 11),
        array('name' => 'nose',  'count' => 10),
        array('name' => 'mouth', 'count' => 10),
        array('name' => 'hair',  'count' => 5),
    );
    
    $folder1 = substr($code, 0, 2);
    $folder2 = substr($code, 2, 2);
    
    $folder = "cache/$folder1/$folder2";
    $file = "$folder/$code.png";
    
    if(!$cache || !file_exists($file))
    {
        // make image
        $i = 0;
        $parts = str_split($code, 5);
        $im = imagecreatetruecolor(64, 64);
        foreach($assets as $item)
        {
            $name = $item['name'];
            $index = getWordOrd($parts[$i++]) % $item['count'];
            $img = "assets/$name/$index.png";
            if(file_exists($img))
            {
                $add = imagecreatefrompng($img);
                imagecopy($im, $add, 0, 0, 0, 0, 64, 64);
            }
        }
        if($cache)
        {
            if(!file_exists($folder))
            {
                mkdir($folder, 0777, true);
            }
            imagepng($im, $file);
        }
        else
        {
            header('Content-Type: image/png');
            imagepng($im);
        }
        imagedestroy($im);
    }
    
    $cache && header("location:$file");
    
    /**
     * 单词 ascii 码和
     * @param $word 字符串
     * @return 求和
     * */
    function getWordOrd($word)
    {
        $result = 0;
        foreach(str_split($word) as $char)
        {
            $result += ord($char);
        }
        return $result;
    }
    
    ?>


    可以在这里预览,素材随便画的 ╮( ̄▽ ̄")╭ 

    展开全文
  • Github风格头像生成

    千次阅读 2019-05-29 23:14:55
    项目介绍 随机生成Github风格头像,可自定义颜色、大小、透明性等。 成果展示 项目地址 github-avatar-generator

    项目介绍

    随机生成Github风格头像,可自定义颜色、大小、透明性等。

    成果展示

    项目地址

    github-avatar-generator

    展开全文
  • 【公众号回复 “1024”,免费领取程序员赚钱实操经验】大家好,我是你们的章鱼猫。很多网站会给默认登陆的用户生成默认的头像,包括 GitHub 其实就有,你想知道是怎么实现的么?今天的推...

    【公众号回复 “1024”,免费领取程序员赚钱实操经验】

    大家好,我是你们的章鱼猫。

    很多网站会给默认登陆的用户生成默认的头像,包括 GitHub 其实就有,你想知道是怎么实现的么?

    今天的推荐的就是一个能够按唯一 Email、ID 或者用户名生成唯一头像的开源代码库:generate-avatar。

    generate-avatar 的最大的特点就是轻量级、快速,目前整个库的大小是 5KB,同时能够非常快速的生成对应的头像。另外只要你输出的字符是确定的,generate-avatar 就能 100% 生成原来唯一的头像,意味着你无需在数据库存储生成的头像图片,可在需要的时候直接计算生成就行,给头像的管理带来了很大的便利。进一步证明了只要足够快,有些问题可能就不是问题了。

    通过网站  https://generate-avatar.now.sh/  可在线体验,以下就是随机生成的头像,是不是还挺有特色的。

    generate-avatar 是使用 TypeScript 开发的,代码量其实不大,感兴趣的可以自行查看。更多项目详情请查看如下链接。

    开源项目地址:https://github.com/loweisz/generate-avatar

    ---特别推荐---

    特别推荐:一个新的优质的推荐高效工具,软件,插件的公众号,每天给大家分享优秀的效率工具,「程序员掘金」,专门为程序员挖掘好东西的一个公众号,非常值得大家关注。

    展开全文
  • Draftbit实现的个人头像生成器(Persona Avatar Generator)
  • android仿区块链头像自动生成

    千次阅读 2019-12-10 11:38:27
    先来看下头像的效果图 头像的构成示意图 如上图所示,整体的头像分为三个部分,中心,side,角,其中每个部分都是有不同的图形”组成,一个中心,4个side,4个角。每个部分都是从基础图形库中随机读取出来,再...

    总的来说就是输入任何的文字字符,通过一定的算法,然后转成一些乱七八糟的,而且对称的图片。这大概就是那些区块链app的头像吧。

    先来看下头像的效果图

    这里写图片描述

    头像的构成示意图

    头像图片分为9个小格子,三个部分
    如上图所示,整体的头像分为三个部分,中心,side,角,其中每个部分都是有不同的图形”组成,一个中心,4个side,4个角。每个部分都是从基础图形库中随机读取出来,再设置不同的图片颜色;白色(0xffffff)和一个随机颜色作为这个图形的背景或者图案的颜色,下面我们分别来介绍每个部分的构成

    中心

    在中心位置画出中心图形。按照一定的规则从基础图形”库中“随机”选取(随机规则后文会有详细的介绍)一个图形,在对图形中的图案进行上色处理(颜色也是随机获取)

    ######中心图形选取方法

    public int	getMiddle(){
    	     return positiveMod(value>>2,34) ;//其中value为伪随机数后文有介绍 34为图形库的总数量
    	}
    
    

    其中positiveMode的具体算法为

    	public static int positiveMod(long i, int m) {
    		return Math.abs((int) (i % m));
    	}
    	//后文都用 positiveMod()这个方法代替
    

    ######中心画笔颜色选取规则

    		int r = 100 + mIdenticonHash.getR() * 8;
    		int g = 100 + mIdenticonHash.getG() * 8;
    		int b = 100 + mIdenticonHash.getB() * 8;
    
    		return 0xff000000 + r * 0x10000 + g * 0x100 + b;
     
         getR() : positiveMod((value >> 16),16);
         getG():  positiveMod((value >> 20),16);
         getB():   positiveMod((value >> 24),16);
    

    ######中心画图案的画笔,与画背景的画笔选取规则二选一

    		boolean invert = mIdenticonHash.getInvertMiddle() == 0; 
    		Paint fg = invert ? mFgPaint : mBgPaint; // true 取第一个
    		Paint bg = invert ? mBgPaint : mFgPaint; // true 取第一个
    //画背景的画笔,与画图形颜色的画笔随机选一个
    
    	public int getInvertMiddle(){
    		return positiveMod((value >> 13),2);
    	}
    
     
    		
    

    ######主要绘制“中心”代码

    private void drawMiddle(Canvas canvas) {
            //随机画的颜色为生成的还是白色
    		boolean invert = mIdenticonHash.getInvertMiddle() == 0; // 去的某个值为0
    
    		Paint fg = invert ? mFgPaint : mBgPaint; // true 取第一个
    		Paint bg = invert ? mBgPaint : mFgPaint; // true 取第一个
    
    		canvas.save();
    		canvas.translate(mTileMeasure.width, mTileMeasure.height); //画布平移 移到中间的的位置,即左上角在中心,通过传入的mTitleMeasure为一个小正方形
    		getTile(mIdenticonHash.getMiddle()).draw(canvas, mTileMeasure, 0, bg, fg);
    		canvas.restore();
    
    	}
    

    side部分

    先从最左边(0,height/3)的部分开始画出第一个图形;第二个side图形开始绕着自身中心点先旋转90度,在移动到(width/3,height/2);第三个side图形也绕着自身中心点旋转90度(相对第一个side图形旋转180度),再移动到(2/3*width,height/3);第四个图形也绕着自身旋转90度(相对第一个side图形旋转270度),再移动到(width/3,0);

    ######背景画笔,图形的选取上和上面“中心”的选取规则是一样的,只是选取的算法不一样

    	boolean invert = mIdenticonHash.getInvertSides() == 0;
    	Paint fg = invert ? mFgPaint : mBgPaint;
    	Paint bg = invert ? mBgPaint : mFgPaint;
    	
    	public int getInvertCorners(){
    		return positiveMod((value >> 15),2);
    	}
    
    

    ######图片选取规则

    	public int getSides(){
    		return positiveMod((value >> 8),34);
    	}
    

    ######颜色的选取规则:

    	protected int getColorSide(){
    		int r = 100 + mIdenticonHash.getG() * 8; 
    		int g = 100 + mIdenticonHash.getR() * 8;
    		int b = 100 + mIdenticonHash.getB() * 8;
    
    		return 0xff000000 + r * 0x10000 + g * 0x100 + b;
    	}
    //具体的getG() ,getR(),getB()与“中心”的选取规则相同
    

    ######side 初始图片旋转的角度选取:

    int rotation = mIdenticonHash.getSidesRotation() * 90; //初始旋转角度选取
    
    public int getSidesRotation(){
    	return positiveMod((value >> 30), 4);
    }
    

    ######主要绘制“side”代码

    /**
    	 * 旋转画四个边的图形(逆时针)
    	 * @param canvas
    	 */
    	private void drawSides(Canvas canvas) {
    		mFgPaint.setColor(getColorSide());
    
    		ClassicIdenticonTile.Tiles drawer = getTile(mIdenticonHash.getSides());
    
    		boolean invert = mIdenticonHash.getInvertSides() == 0;
    		int rotation = mIdenticonHash.getSidesRotation() * 90; // 0 1 2 3 *90  只会出现一次
    
    		Paint fg = invert ? mFgPaint : mBgPaint;
    		Paint bg = invert ? mBgPaint : mFgPaint;
    
    		canvas.save();
    		canvas.translate(0, mTileMeasure.height);
    		drawer.draw(canvas, mTileMeasure, 0 + rotation, bg, fg);
    		canvas.restore();
    
    		canvas.save();
    		canvas.translate(mTileMeasure.width, mTileMeasure.height2);
    		drawer.draw(canvas, mTileMeasure, 90 + rotation, bg, fg);
    		canvas.restore();
    
    		canvas.save();
    		canvas.translate(mTileMeasure.width2, mTileMeasure.height);
    		drawer.draw(canvas, mTileMeasure, 180 + rotation, bg, fg);
    		canvas.restore();
    
    		canvas.save();
    		canvas.translate(mTileMeasure.width, 0);
    		drawer.draw(canvas, mTileMeasure, 270 + rotation, bg, fg);
    		canvas.restore();
    
    	}
    
    

    角 部分

    先从最左边(0,0)的部分开始画出第一个图形;第二个side图形开始绕着自身中心点先旋转90度,在移动到(0,height);第三个side图形也绕着自身中心点旋转90度(相对第一个side图形旋转180度),再移动到(width,height);第四个图形也绕着自身旋转90度(相对第一个side图形旋转270度),再移动到(width,0);

    背景画笔,图形的选取和上面的“中心”,“side”的选取规则是一样的,只是选取的规则不一样

    ######画笔的选取规则

    	boolean invert = mIdenticonHash.getInvertCorners() == 0;
        Paint fg = invert ? mFgPaint : mBgPaint;
    	Paint bg = invert ? mBgPaint : mFgPaint;
    	
    	public int getInvertCorners(){
    		return positiveMod((value >> 14),2);
    	}
    

    ######图形选取规则

    public int getCorners(){
    	retrun positiveMod((value >> 3), 34);
    }
    

    ######颜色的选取规则:

    	protected int getColorConner(){
    		int r = 100 + mIdenticonHash.getB() * 8;
    		int g = 100 + mIdenticonHash.getR() * 8;
    		int b = 100 + mIdenticonHash.getG() * 8;
    
    		return 0xff000000 + r * 0x10000 + g * 0x100 + b;
    	}
    //具体的getG() ,getR(),getB()与“中心”,“side”的选取规则相同
    

    ######“角” 初始图片旋转的角度选取:

    int rotation = mIdenticonHash.getCornersRotation() * 90; //初始旋转角度选取
    
    public int getCornersRotation(){
    	return positiveMod((value >> 28), 4);
    }
    

    ######主要绘制“角”代码

    /**
    	 /**
    	 * 旋转着画四个边角
    	 * @param canvas
    	 */
    	private void drawCorners(Canvas canvas) {
            mFgPaint.setColor(getColorConner());
    		ClassicIdenticonTile.Tiles drawer = getTile(mIdenticonHash.getCorners());
    
    		boolean invert = mIdenticonHash.getInvertCorners() == 0;
    		int rotation = mIdenticonHash.getCornersRotation() * 90;
    
    		Paint fg = invert ? mFgPaint : mBgPaint;
    		Paint bg = invert ? mBgPaint : mFgPaint;
    
    		drawer.draw(canvas, mTileMeasure, 0 + rotation, bg, fg);
    
    		canvas.save();
    		canvas.translate(mTileMeasure.width2, 0);
    		drawer.draw(canvas, mTileMeasure, 90 + rotation, bg, fg);
    		canvas.restore();
    
    		canvas.save();
    		canvas.translate(mTileMeasure.width2, mTileMeasure.height2);
    		drawer.draw(canvas, mTileMeasure, 180 + rotation, bg, fg);
    		canvas.restore();
    
    		canvas.save();
    		canvas.translate(0, mTileMeasure.height2);
    		drawer.draw(canvas, mTileMeasure, 270 + rotation, bg, fg);
    		canvas.restore();
    	}
    	}
    

    #####补充:
    #####伪随机数算法,即前面文字提到的value这个值

     /**
         * 生成一个伪随机数,整个图形的生成都依据这个随机数
         * @param data
         * @return
         */
        public static int FNVHash1(String data)
        {
            final int p = 16777619;
            int hash = (int)2166136261L;
            for(int i=0;i<data.length();i++) {
                hash = (hash ^ data.charAt(i)) * p;
            }
            hash += hash << 13;
            hash ^= hash >> 7;
            hash += hash << 3; 
            hash ^= hash >> 17;
            hash += hash << 5;
            return hash;
        }
      
        
    

    #####基础图形库
    这个没什么好说的就是画一些基础图形。一般来说话的图形越多,真个头像的组合就会越丰富。

    总结

    其实整个随机头像也是由基础的图形,通过绘制不同的颜色,不同的位置,不同的角度组成的,
    也很简单。虽然和其他的效果图有一定的不同,但是总的来说还是实现了这个功能,后续还有很多可以改进的地方。
    

    下载地址: demo下载地址,很久以前写的,如果有需要,下载下来凑合着看吧;

    展开全文
  • 哈希头像生成器Identicon

    千次阅读 2017-04-06 19:25:15
    avatar_generator哈希头像图片生成器 Python代码Identicon 在很多大型IT网站上可以见到,比如 Github, Sourceforge, Stackoveflow 等等, 刚刚注册的账号的个人信息的默认图标​都​是​一​些​看​上​去​像​七...
  • 因为迎近国庆,腾讯新闻出了款微信用户头像框在线生成的h5网页,当天朋友圈被这条消息刷屏了 然后我晚上就花2个多小时时间开发了一款微信小程序“小小小头像”,这款小程序可以获取用户头像选择自己喜欢的...
  • // 建立一幅 434X630 的... //设置透明背景图 如果用imagecreate 则图片二维码上的用户头像变灰 $textcolor = imagecolorallocate($im, 255, 0, 255); $str="你好!"; //解决中文乱码所以用imagettftext 方法 $w
  • 头像加边框——校庆头像制作的小程序 ——分享改变世界,感谢成长路上遇见的分享 话不多说先上图(满意客官再往下看): 首页 选择头像框 制作界面 ...
  •  项目中有个需求,要求显示人员头像和名称列表,而头像是名字的第一个文字和背景颜色生成,文字颜色为白色,背景自动生成。 2、分析 由于名字图像是自动生成,背景颜色不一样,可以考虑一下几种方法:  1)使用...
  • 头像一键戴口罩教程

    千次阅读 2020-02-01 19:34:01
    1.打开点我自动戴口罩,会看到如下戴口罩页面 2.准备 需要戴口罩的人物 动漫 ... ...3.系统 会自动识别鼻子嘴巴,然后带上口罩。...4.生成戴口罩图像后,适当调整或者更换喜欢的口罩款式。...也可在线生成分享给朋友的...
  • Python头像动漫化,快来生成一个自己的动漫头像

    千次阅读 多人点赞 2020-05-09 03:02:15
    而男生动漫头像生成就有点差强人意了,大家可以自己试试,下面我们看看我用有村大妹子生成的两张图片,我们先看第一张: 接下来是第二张,我用的是垫底辣妹中的形象: 两张效果都还可以,主要还是人
  • //微信两维码  $QR="./Uploads/Users/2015-09-07/14416192373.jpg";  $logo='http://7xk56y.com1.z0.glb.clouddn.com/FgkCSrkrr6VjMcK8v26DAWG11pav?imageView2/1/w/100/h/100';  $im = @imagecreatetr
  • 生成带微信头像的用户二维码

    千次阅读 2016-08-16 18:03:29
    php 生成带微信头像的用户二维码
  • 如何生成二维码 与内嵌Logo的二维码
  • 在计算机视觉国际会议上,Facebook AI研究部门科学家里奥·伍尔夫( Lior Wolf )在一篇论文中展示了如何创建一套机器学习系统,利用一个自定义表情符号生成器,创造出最贴合你面部特征的卡通头像。 无需人工...
  • 修改Gravatar生成的默认头像

    千次阅读 2018-01-02 17:29:27
    我们知道,如果Gravatar服务器没有找到某个账号的邮箱,将会生成一个默认头像,即 Gravatar 的 Logo,如图。 但是,我个人不太喜欢他这个单调的图片,因为大部分人是没有申请这个账号的,所以千篇一律的蓝色...
  • 领导要求页面整改,头像生产工具是首要的,然后开始说非要图片的,用h5,svg,canvas之类的做, 参考地址:https://github.com/joaner/namedavatar 但是我觉得太繁琐了,而且不可控,比如font-size,text-shadow,font-...
  • 8个免费恶搞照片在线生成网站

    千次阅读 2012-04-26 10:17:04
    是一个专门提供各种特图片生成工具的网站, 你可以选从本地, 从URL或是从Flickr添加你的图片, 然后选定你喜欢的一个特效, 即可生成, 生成的图片可以下载保存或是快捷分享到热门的社会化网络. Your Magic Photo
1 2 3 4 5 ... 20
收藏数 33,102
精华内容 13,240
关键字:

头像生成