Ça y est, aujourd'hui j'ai écrit un modèle PHP pour générer des codes de vérification basés sur les informations sur Internet :
<?php
// 获取验证码(参数:验证码个数,验证码宽度,验证码高度)
function getCode($num = 4, $width = 100, $height = 30){
session_start();
$authcode='';
// 生成验证码
for($i=0;$i<$num;$i++){
switch(rand(0,1))
{
case 0:$authcode[$i]=chr(rand(48,57));break; // 数字
case 1:$authcode[$i]=chr(rand(65,90));break; // 大写字母
//case 2:$authcode[$i]=chr(rand(97,122));break; // 小写字母
}
}
$_SESSION["AuthCode"]=$authcode;
$image=imagecreate($width,$height); // 赋值宽度,高度
imagecolorallocate($image,255,255,255); // 设定图片背景颜色
// 生成干扰像素
for($i=0;$i<80;$i++){
$dis_color=imagecolorallocate($image,rand(0,2555),rand(0,255),rand(0,255));
imagesetpixel($image,rand(1,$width),rand(1,$height),$dis_color);
}
// 打印字符到图像
for($i=0;$i<$num;$i++){
$char_color=imagecolorallocate($image,rand(0,2555),rand(0,255),rand(0,255));
imagechar($image,60,($width/$num)*$i,rand(0,5),$authcode[$i],$char_color);
}
// 将图片直接输出
header("Content-type:image/png");
imagepng($image);//输出图像到浏览器
imagedestroy($image);//释放资源
}
getCode();
Mais je ne veux pas qu'il produise l'image directement, mais qu'il produise l'image en base64. Comment dois-je faire cela ? J'ai essayé de nombreuses méthodes sans succès, sauf si c'est nécessaire :
$img_file = 'https://www.xxxxxxxxxx.com/authcode.php';
$img_info = getimagesize($img_file);
$img_src = "data:{$img_info['mime']};base64," . base64_encode(file_get_contents($img_file));
echo "<img src='{$img_src}' />";
Comment puis-je sortir directement en base64 dans getCode ?
La clé pour savoir s'il faut sortir directement les images est
Fermer l'en-tête
fonction imagepng, le deuxième paramètre définit l'emplacement de sauvegarde de l'image.
Lisez ensuite l'emplacement de stockage pour lire l'image et la convertir en base64.
documentation php
La section commentaires sous le document peut avoir les réponses dont vous avez besoin