PHP réalise l'avatar de la première lettre

<?php
$name="哈哈";
$logo=letter_avatar($name);

echo '<img src="'.$logo.'" style=" border-radius: 50%;">';


function letter_avatar($text)
{
    $total = unpack('L', hash('adler32', $text, true))[1];
    $hue = $total % 360;
    list($r, $g, $b) = hsv2rgb($hue / 360, 0.3, 0.9);

    $bg = "rgb({$r},{$g},{$b})";
    $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>');
    $value = 'data:image/svg+xml;base64,' . $src;
    return $value;
}

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)
    ];
}

 

  1. Une fonction est définie letter_avatar, qui reçoit un paramètre $textreprésentant le texte pour générer l'avatar.
  2. Utilisez la valeur de hachage hashcalculée par la fonction $textet décompressez-la dans un long non signé.
  3. La valeur de hachage est modulo 360 pour obtenir une valeur de teinte $hue.
  4. Utilisez hsv2rgbdes fonctions pour convertir la teinte, la saturation et la luminosité en valeurs de composants RVB.
  5. Génère une couleur d'arrière-plan basée sur les valeurs RVB $bg.
  6. Définissez la couleur du texte $colorsur blanc.
  7. Utilisez mb_strtoupperla fonction pour $textmettre en majuscule la première lettre de .
  8. Générez un arrière-plan carré et un texte centré à l'aide de la syntaxe SVG.
  9. Utilisez base64_encodela fonction pour convertir le code SVG en encodage Base64.
  10. Concaténez l'encodage et le préfixe Base64 data:image/svg+xml;base64,dans un chemin d'image complet.
  11. Renvoie le chemin de l'image générée. Remarque : Ce code génère uniquement le chemin d'une image d'avatar et ne génère pas l'image sur la page. Si vous souhaitez afficher l'avatar sur la page, vous devez utiliser le chemin de l'image générée comme valeur d'attribut <img>de la balise src.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_39934453/article/details/132107961
conseillé
Classement