最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP實(shí)現(xiàn)首字母(截取第一個(gè)漢字)生成頭像圖片

 更新時(shí)間:2024年06月15日 12:01:02   作者:壹零柒  
會(huì)員系統(tǒng)中,用戶如果不上傳自定義頭像,使用固定圖片作為頭像未免有些單調(diào),PHP可以實(shí)現(xiàn)生成用戶名首字母或者第一個(gè)漢字(第一個(gè)字符)的頭像圖片,不使用第三方API,第三方雖然圖片比較多,但是會(huì)有超時(shí)

會(huì)員系統(tǒng)中,用戶如果不上傳自定義頭像,使用固定圖片作為頭像未免有些單調(diào)。PHP可以實(shí)現(xiàn)生成用戶名首字母或者第一個(gè)漢字(第一個(gè)字符)的頭像圖片,不使用第三方API,第三方雖然圖片比較多,但是會(huì)有超時(shí)。

設(shè)計(jì)思路

定義了一個(gè)letter_avatar函數(shù),接收一個(gè)參數(shù)$text,表示要生成頭像的文字。
使用hash函數(shù)計(jì)算出$text的哈希值,并將其解包為一個(gè)無符號(hào)長整型數(shù)。
將哈希值對(duì)360取余得到一個(gè)色相值$hue。
使用hsv2rgb函數(shù)將色相、飽和度和亮度轉(zhuǎn)換為RGB分量值。
根據(jù)RGB值生成背景顏色$bg。
設(shè)定文字顏色$color為白色。
使用mb_strtoupper函數(shù)將$text的首字母轉(zhuǎn)為大寫。
使用SVG語法生成一個(gè)正方形的背景和一個(gè)居中的文字。
使用base64_encode函數(shù)將SVG代碼轉(zhuǎn)為Base64編碼。
將Base64編碼和前綴data:image/svg+xml;base64,拼接成完整的圖片路徑。
返回生成的圖片路徑。 注意:這段代碼只是生成了一個(gè)頭像圖片的路徑,并沒有將圖片輸出到頁面中。如果要在頁面中顯示頭像,需要將生成的圖片路徑作為<img>標(biāo)簽的src屬性值。

完整代碼

//1、方法調(diào)用測試
letter_avatar("hello")

//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);

    // 對(duì)數(shù)據(jù)進(jìn)行Base64解碼
    $fileData = base64_decode($data);

    // 創(chuàng)建輸出目錄如果它不存在
    if (!file_exists($output_folder)) {
        mkdir($output_folder, 0755, true);
    }

    // 將解碼后的數(shù)據(jù)保存到文件
    $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)
    ];
}

總結(jié)

到此這篇關(guān)于PHP實(shí)現(xiàn)首字母(截取第一個(gè)漢字)生成頭像圖片的文章就介紹到這了,更多相關(guān)PHP字母或漢字生成頭像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • CodeIgniter中實(shí)現(xiàn)泛域名解析

    CodeIgniter中實(shí)現(xiàn)泛域名解析

    這篇文章主要介紹了CodeIgniter中實(shí)現(xiàn)泛域名解析的方法,需要的朋友可以參考下
    2014-07-07
  • YII框架行為behaviors用法示例

    YII框架行為behaviors用法示例

    這篇文章主要介紹了YII框架行為behaviors用法,結(jié)合實(shí)例形式分析了Yii框架行為behaviors的添加與使用簡單操作技巧,需要的朋友可以參考下
    2019-04-04
  • PHP實(shí)現(xiàn)一個(gè)二維碼同時(shí)支持支付寶和微信支付的示例

    PHP實(shí)現(xiàn)一個(gè)二維碼同時(shí)支持支付寶和微信支付的示例

    這篇文章主要介紹了PHP實(shí)現(xiàn)一個(gè)二維碼同時(shí)支持支付寶和微信支付的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • PHP中使用CURL模擬登錄并獲取數(shù)據(jù)實(shí)例

    PHP中使用CURL模擬登錄并獲取數(shù)據(jù)實(shí)例

    這篇文章主要介紹了PHP中使用CURL模擬登錄并獲取數(shù)據(jù)實(shí)例,登錄成功后獲取個(gè)人頭像并輸出顯示,需要的朋友可以參考下
    2014-07-07
  • php中curl新手秒變高手的使用教程實(shí)例

    php中curl新手秒變高手的使用教程實(shí)例

    本文介紹PHP中使用cURL發(fā)送HTTP請(qǐng)求的優(yōu)勢,涵蓋POST數(shù)據(jù)提交、文件上傳下載、http驗(yàn)證、代理請(qǐng)求、JSON處理及多連接處理,強(qiáng)調(diào)其靈活性和強(qiáng)大功能,適合復(fù)雜網(wǎng)絡(luò)操作需求
    2025-06-06
  • PHP Streams(流)詳細(xì)介紹及使用

    PHP Streams(流)詳細(xì)介紹及使用

    這篇文章主要介紹了PHP Streams(流)詳細(xì)介紹及使用,PHP Streams是內(nèi)置核心操作,可能一般的開發(fā)者很少用,它用于統(tǒng)一文件、網(wǎng)絡(luò)、數(shù)據(jù)壓縮等類文件操作方式,并為這些類文件操作提供一組通用的函數(shù)接口,需要的朋友可以參考下
    2015-05-05
  • PHP實(shí)現(xiàn)獲取FLV文件的時(shí)間

    PHP實(shí)現(xiàn)獲取FLV文件的時(shí)間

    這篇文章主要介紹了PHP實(shí)現(xiàn)獲取FLV文件的時(shí)間,本文直接給出實(shí)現(xiàn)代碼和使用方法,需要的朋友可以參考下
    2015-02-02
  • php?composer的自動(dòng)加載原理深入解析

    php?composer的自動(dòng)加載原理深入解析

    這篇文章主要為大家介紹了php?composer自動(dòng)加載原理深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • thinkphp實(shí)現(xiàn)分頁顯示功能

    thinkphp實(shí)現(xiàn)分頁顯示功能

    這篇文章主要為大家詳細(xì)介紹了thinkphp實(shí)現(xiàn)分頁顯示功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • php多種形式發(fā)送郵件(mail qmail郵件系統(tǒng) phpmailer類)

    php多種形式發(fā)送郵件(mail qmail郵件系統(tǒng) phpmailer類)

    這篇文章主要介紹了php多種形式發(fā)送郵件的方法,包括使用mail()函數(shù)、使用管道的形式、使用phpmailer類等方法,大家參考使用吧
    2014-01-01

最新評(píng)論

太仆寺旗| 阿鲁科尔沁旗| 微山县| 乌拉特中旗| 调兵山市| 闸北区| 巴林左旗| 宁蒗| 鹤庆县| 甘洛县| 永德县| 浠水县| 新郑市| 保靖县| 黄浦区| 新源县| 江永县| 政和县| 宁明县| 北宁市| 富锦市| 滨州市| 广州市| 平果县| 南阳市| 云浮市| 从江县| 繁峙县| 邢台市| 新宾| 鹤岗市| 漳州市| 肥东县| 安丘市| 新野县| 宣城市| 金山区| 大理市| 定边县| 读书| 湄潭县|