簡體   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