【前端】如何以base64输出图片

是这样的,今天按着网上的资料写了一个PHP生成验证码的模板:

<?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();

可是我不想让他直接输出图片,而是以base64输出图片,请问该如何做?自己试了很多方法都不成功,除非必须这样:

$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='https://segmentfault.com/q/1010000009497110/{$img_src}' />";

请问如何在getCode中就直接输出base64呢?

回答

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

  1. 关闭 header

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

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

【前端】如何以base64输出图片

php文档

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

ob_start();

imagepng($image);

$image_data = ob_get_contents();

ob_end_clean();

【前端】如何以base64输出图片

以上是 【前端】如何以base64输出图片 的全部内容, 来源链接: utcz.com/a/80321.html

回到顶部