2014-06-25 39 views
0

我以下面的方式在SQL DB,varbinary(max)数据类型的图像字段中保存了一个图像。如何在SQL Server中存储和检索图像VARBINARY(MAX)数据类型

$image = "baby.jpg"; 
$type = pathinfo($image, PATHINFO_EXTENSION); 
$data = file_get_contents($image); 
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data); 
$insert = "insert into logoType(image)values(?)"; 
$param = array($base64); 
$sql = sqlsrv_query($dbhandle, $insert, $param) or die(print_r(sqlsrv_errors())); 

插入部分成功。现在,我怎样才能从数据库中检索保存的图像,并使用php将其显示在网页中。我尝试了以下方法,但不断收到错误消息,“图像无法显示,因为它包含错误。”

header('Content-Type: image/x-bmp'); 
echo $image; 

如何使用PHP中的数据存储在数据库中的图像显示在网页?请指导。提前致谢。

回答

0

保存之前已将图像转换为Base64,因此应将其转换回来,然后使用echo

0

<?php 
 
    \t \t $serverName = "server"; 
 
\t \t $uid = "user"; 
 
\t \t $pwd = "pass"; 
 
\t \t $connectionInfo = array("UID"=>$uid, 
 
\t \t \t \t \t \t \t \t "PWD"=>$pwd, 
 
\t \t \t \t \t \t \t \t "Database"=>"database"); 
 
\t \t $conn = sqlsrv_connect($serverName, $connectionInfo); 
 
\t \t 
 
\t \t if($conn === false){ 
 
\t \t \t echo "Unable to connect.</br>"; 
 
\t \t \t die(print_r(sqlsrv_errors(), true)); 
 
\t \t } 
 
\t \t 
 
\t \t \t $fotoquery = "SELECT column_image FROM Table WHERE Column = 'xxxxxxxxxx'"; 
 
\t \t \t $stmt = sqlsrv_query($conn, $fotoquery); 
 
\t 
 
\t \t if($stmt === false){ 
 
      echo "Error in executing query.</br>"; 
 
      die(print_r(sqlsrv_errors(), true)); 
 
     } 
 
\t  
 
\t \t \t $dataImage = sqlsrv_fetch_array($stmt); 
 
\t \t \t $varimg = base64_encode($dataImage[0]); 
 
\t \t \t $data = base64_decode($varimg); 
 
\t   $im = imagecreatefromstring($data); 
 
\t \t \t 
 
\t \t if ($im !== false) { 
 
\t \t \t header('Content-Type: image/png'); 
 
\t \t \t imagepng($im); 
 
\t \t \t imagedestroy($im); 
 
\t \t } 
 
\t \t else { 
 
\t \t \t echo 'An error occurred.'; 
 
\t \t } 
 
?>

相关问题