在php中将base64字符串转换为图像

在php中将base64字符串转换为图像,php,base64,Php,Base64,我想将图像转换为字节数组,并将此字节数组保存到我的数据库中,然后我想获取此字节数组并在浏览器上打印 为此,我尝试在base64_encode函数中传递一个图像,该函数为我提供字符串。我将该字符串传递到base64_解码函数中。但这里未显示图像,这是我的代码 这是我第一个用于存储图像字节数组的文件 ` ?> ` 这是我的第二个显示图像的文件 `<?php $db = mysqli_connect("localhost","root","","demo"); //keep your db n

我想将图像转换为字节数组,并将此字节数组保存到我的数据库中,然后我想获取此字节数组并在浏览器上打印

为此,我尝试在base64_encode函数中传递一个图像,该函数为我提供字符串。我将该字符串传递到base64_解码函数中。但这里未显示图像,这是我的代码 这是我第一个用于存储图像字节数组的文件

` ?> ` 这是我的第二个显示图像的文件

`<?php

$db = mysqli_connect("localhost","root","","demo"); //keep your db name
$sql = "SELECT * FROM imagetable WHERE id=2";
$sth = $db->query($sql);
$result=mysqli_fetch_array($sth);
echo '<img src="data:image/jpeg;base64,'.base64_encode( $result['image'] ).'"/>';
?>`

但它不会在浏览器上显示图像,而是给出错误信息

无法显示,因为它包含错误


您的代码似乎可以工作,即使它没有真正意义

就像@deceze已经说过的,您不需要使用imagecreatefromstring再次创建它,您只需要回显输出

您的问题似乎是没有正确编码图片。 图像的base64通常要大得多。我用一个19x19px的JPG测试了它,它大约有22000个字符

你能告诉我们你是如何编码你的图片的,也许能提供你的图片样本吗? 如果编码正确,可能没有从数据库中正确保存或检索它

在你的例子中

echo '<img src="data:image/jpeg;base64,'.base64_encode( $result['image'] ).'"/>';
它应该被解码而不是编码。 也许已经是这样了。

`
$db = mysqli_connect("localhost","root","","demo"); //keep your db name
$sql = "SELECT * FROM imagetable WHERE id=1";
$sth = $db->query($sql);
$result=mysqli_fetch_array($sth);
//$data = explode(',', $result['image']);
echo '<img src="data:image/jpeg;base64,'.$result['image'].'"/>';

?>`

第2行应为base64_encode$demo;,不解码。

只需echo base64_decode$demo;,不需要所有图像转换的东西。我也尝试像$db=mysqli\u connectlocalhost,root,demo//保持数据库名$sql=SELECT*来自imagetable,其中id=2;$sth=$db->query$sql;$result=mysqli\u fetch\u数组$sth;回响在你的问题的正下方有一个叫做“编辑”的神奇功能;给我一个JFIF ``CÿCÿCÿCÀ8ÿCÿ196ÿµ}!如果我将演示字符串粘贴到base64解码器中,例如,或结果一开始就被破坏,则1AQaq2“B”Rð240;$3br%&“*456789:CDEFGHIJSTUVWXYZCDEFGHIJSTUVXYZ…”。它真的是一个有效的base64字符串吗;不工作。字符串不是太短,而是太长了,为了空间的缘故,我并没有提到“满”。我从这个链接将图像转换成字符串好的,在你们更新之后,我看到你们做了什么。所以基本上你拍了一张照片,用一个Web服务把它转换成base64。然后将其放入PHP中进行解码,并将二进制文件写入数据库。现在,您从数据库中获取它并再次加密,但这不起作用。1.当您只输出它而不经过数据库时,它工作吗?2.您使用什么字段类型将其保存在数据库中?3.为什么不直接保存base64编码的图像,而不是再次对其进行解密?
$db = mysqli_connect("localhost","root","","demo"); //keep your db name
$sql = "SELECT * FROM imagetable WHERE id=1";
$sth = $db->query($sql);
$result=mysqli_fetch_array($sth);
//$data = explode(',', $result['image']);
echo '<img src="data:image/jpeg;base64,'.$result['image'].'"/>';