生成头像(没事写着玩的)

2 篇文章 0 订阅
<?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;
}

?>


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值