繁体   English   中英

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

[英]convert base64 string to image in php

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

为此,我试图在base64_encode()函数中传递图像,这使我将此字符串传递给base64_decode()函数。但是图像未显示在这里,这是我的代码,这是我存储图像字节数组的第一个文件

`

    $demo="/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBAQICAgICAg";
    $data = base64_decode($demo);
    $host="localhost";
    $db="demo";
    $password="";
    $db_user="root";
    $conn=mysqli_connect($host,$db_user,$password) or die("connection not stablished");
    mysqli_select_db($conn,$db) or die("database not found");
    $temp=mysqli_query($conn,"INSERT INTO imagetable (image)
                VALUES ('".$data."')");
    if($temp==TRUE)
    {
      echo "image inserted";
    }
    else
    {
    echo "image not inserted";
    }

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

`<?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);,而不是解码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM