suchen

Heim  >  Fragen und Antworten  >  Hauptteil

php – So geben Sie ein Bild in Base64 aus

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?

伊谢尔伦伊谢尔伦2763 Tage vor906

Antworte allen(1)Ich werde antworten

  • 淡淡烟草味

    淡淡烟草味2017-05-24 11:34:19

    是否直接输出图片关键在于

    1. 关闭 header

    2. imagepng函数, 第二个参数设置图片保存位置.

    然后去读取存储位置读取图片, 转换成base64.

    php文档

    文档下面的留言部分可能有你需要的答案

    ob_start();
    imagepng($image);
    $image_data = ob_get_contents();
    ob_end_clean();

    Antwort
    0
  • StornierenAntwort