Das war’s, heute habe ich eine PHP-Vorlage zum Generieren von Verifizierungscodes basierend auf den Informationen im Internet geschrieben:
<?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();
Aber ich möchte nicht, dass er das Bild direkt ausgibt, sondern in base64. Wie soll ich das machen? Ich habe viele Methoden ohne Erfolg ausprobiert, es sei denn, es ist notwendig:
$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}' />";
Wie kann ich base64 direkt in getCode ausgeben?
是否直接输出图片关键在于
关闭 header
imagepng函数, 第二个参数设置图片保存位置.
然后去读取存储位置读取图片, 转换成base64.
php文档
文档下面的留言部分可能有你需要的答案