首页 > 编程语言 >截取第一个字用php生成一个头像

截取第一个字用php生成一个头像

时间:2024-05-23 10:43:06浏览次数:34  
标签:case 截取 base64 字用 break avatar php 生成 image

在做商城时生成随机一个头像,找了一下发现用首个字符直接生成的类也不错,和用第三方外链的话还是有不同的,第三方虽然图片比较多,但是会有超时问题,所以用首字母生成方式本地搞,代码如下:

点击查看代码
1、方法调用测试
letter_avatar("壹零柒")

2、生成图片方法
function letter_avatar($text)
{
    $total = unpack('L', hash('adler32', $text, true))[1];
    $hue = $total % 360;
    list($r, $g, $b) = hsv2rgb($hue / 247, 0.3, 0.9);

    $bg = "rgb(247,186,11)";

    $color = "#ffffff";
    $first = mb_strtoupper(mb_substr($text, 0, 1));

    $src = base64_encode('<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="100" width="100"><rect fill="' . $bg . '" x="0" y="0" width="100" height="100"></rect><text x="50" y="50" font-size="50" text-copy="fast" fill="' . $color . '" text-anchor="middle" text-rights="admin" dominant-baseline="central">' . $first . '</text></svg>');

    // 确保图片保存的路径存在
    $tempPath = WEB_PATH . 'temp' . DS . 'avatar' . DS;
    $filename = md5('avatar_' . uniqid());

    // 生成图片链接
    return base64_to_image_url('data:image/svg+xml;base64,' . $src, $tempPath, $filename);
}
</details>

3、生成https访问链接
function base64_to_image_url($base64_string, $output_folder, $image_name)
{
    $data = substr($base64_string, strpos($base64_string, ',') + 1);

    // 对数据进行Base64解码
    $fileData = base64_decode($data);

    // 创建输出目录如果它不存在
    if (!file_exists($output_folder)) {
        mkdir($output_folder, 0755, true);
    }

    // 将解码后的数据保存到文件
    $file = $output_folder . $image_name . '.svg';

    if (file_put_contents($file, $fileData)) {
        // 返回图片的URL
        return base_url() . 'temp' . DS . 'avatar' . DS . $image_name. '.svg';
    }
    return false;
}

4、RGB
function hsv2rgb($h, $s, $v)
{
    $r = $g = $b = 0;

    $i = floor($h * 6);
    $f = $h * 6 - $i;
    $p = $v * (1 - $s);
    $q = $v * (1 - $f * $s);
    $t = $v * (1 - (1 - $f) * $s);

    switch ($i % 6) {
        case 0:
            $r = $v;
            $g = $t;
            $b = $p;
            break;
        case 1:
            $r = $q;
            $g = $v;
            $b = $p;
            break;
        case 2:
            $r = $p;
            $g = $v;
            $b = $t;
            break;
        case 3:
            $r = $p;
            $g = $q;
            $b = $v;
            break;
        case 4:
            $r = $t;
            $g = $p;
            $b = $v;
            break;
        case 5:
            $r = $v;
            $g = $p;
            $b = $q;
            break;
    }

    return [
        floor($r * 255),
        floor($g * 255),
        floor($b * 255)
    ];
}

标签:case,截取,base64,字用,break,avatar,php,生成,image
From: https://www.cnblogs.com/yilingqi/p/18207868

相关文章

  • PHP做api开发时,签名验证你是怎么设计的
    开发过程中,我们经常会与接口打交道,有的时候是调取别人网站的接口,有的时候是为他人提供自己网站的接口,但是在这调取的过程中都离不开签名验证。我们在设计签名验证的时候,请注意要满足以下几点:可变性:每次的签名必须是不一样的。时效性:每次请求的时效,过期作废等。唯一性:每......
  • PHP函数 三角函数的基本使用
    直角三角函数的定义:正弦(sin)等于对边比斜边;sinA=a/c;余弦(cos)等于邻边比斜边;cosA=b/c;正切(tan)等于对边比邻边;tanA=a/b;余切(cot)等于邻边比对边;cotA=b/a;<?phpheader('Content-Type:text/html;charset=utf-8');define('ROOT',$_SERVER['DOCUMENT_ROOT']);include......
  • PHP函数 向数组插入元素
    <?phpheader('Content-Type:text/html;charset=utf-8');define('ROOT',$_SERVER['DOCUMENT_ROOT']);includeROOT.'/assets/php/head.php';//PHP向数组插入元素/***1、使用array_unshift()函数,向数组头插入新元素;*2、使用array_push()函......
  • PHP函数 explode和eval的使用
    <?phpheader('Content-Type:text/html;charset=utf-8');define('ROOT',$_SERVER['DOCUMENT_ROOT']);includeROOT.'/assets/php/head.php';/***explode()函数把字符串打散为数组。*eval()函数把字符串按照PHP代码来计算。**/$val=&#......
  • PHP历理 计算24点纸牌游戏
    <?php/*demo*/$tf=newTwentyFourCal();$tf->calculate(array(4,8,8,8));$tf->calculate(array(10,10,4,4));$tf->calculate(array(4,4,4,4));$tf->calculate(array(1,2,1,2));$tf->calculate(array(5,6,7,8));classTwentyFourCal......
  • PHP函数 Math函数
    <?phpheader('Content-Type:text/html;charset=utf-8');define('ROOT',$_SERVER['DOCUMENT_ROOT']);includeROOT.'/assets/php/head.php';//Math函数/***abs—绝对值*acos—反余弦*acosh—反双曲余弦*asin—反正弦*......
  • PHP函数 变量类型
    <?phpheader('Content-Type:text/html;charset=utf-8');define('ROOT',$_SERVER['DOCUMENT_ROOT']);includeROOT.'/assets/php/head.php';//类型/***Boolean布尔类型*Integer整型*Float浮点型*String字符串*Numer......
  • PHP函数 算术运算符
    <?phpheader('Content-Type:text/html;charset=utf-8');define('ROOT',$_SERVER['DOCUMENT_ROOT']);includeROOT.'/assets/php/head.php';//算术运算符/***+$a:标识;根据情况将$a转化为int或float。*-$a:取反;$a的负值。*$a+$b:加法;$a......
  • PHP函数 赋值运算符
    <?phpheader('Content-Type:text/html;charset=utf-8');define('ROOT',$_SERVER['DOCUMENT_ROOT']);includeROOT.'/assets/php/head.php';//赋值运算符/***例子等同于操作*$a+=$b等同于$a=$a+$b加法*$a-=$b等同于$a=$a-$......
  • PHP函数 比较运算符
    <?phpheader('Content-Type:text/html;charset=utf-8');define('ROOT',$_SERVER['DOCUMENT_ROOT']);includeROOT.'/assets/php/head.php';//比较运算符/***$a==$b等于true,如果类型转换后$a等于$b。*$a===$b全等true,如果$a等于$b,......