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

时间:2014-09-12 09:26:00

标签: php base64

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

为此我试图在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";
    }

&GT?; ` 这是我显示图像的第二个文件

`<?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'] ).'"/>';

&GT;`

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

  

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

3 个答案:

答案 0 :(得分:0)

您的代码似乎有效(即使它确实没有意义)。

就像@deceze已经说过你不需要用imagecreatefromstring()再次创建它,你只需要回显输出。

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

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

在你的例子中

echo '<img src="data:image/jpeg;base64,'.base64_encode( $result['image'] ).'"/>';

它应该是解码而不是编码。 也许那已经是它了。

答案 1 :(得分:0)

`

$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'].'"/>';

&GT;`

答案 2 :(得分:0)

第2行应该读取base64_encode($ demo);,而不是解码。