将图像存储在在线数据库中作为类型'图像'作为字节数组

时间:2013-09-16 15:06:29

标签: php android sql sql-server

我正在创建一个Android应用,我需要检索存储在在线MS SQL数据库中的图像。该表称为ImagesData,它包含一个名为Image_Data的列,其类型为“image”。该列的内容采用十六进制值(以0x9F4AB7DA7 ......开头等等)。每个条目长约43679个字符(如上所述填充十六进制字符)。我的疑问是如何检索这个十六进制数据并在我的应用程序中将其显示为ImageView。

注意:我尝试使用PHP脚本检索数据,但是它出现错误,提示“警告:mssql_query()[function.mssql-query]:消息:仅Unicode的归类或ntext数据中的Unicode数据不能使用DB-Library(例如ISQL)或ODBC 3.7或更早版本(严重级16)“

发送给客户端
<?php

include('config.php');

  $query= "select * from ImagesData where Image_id = '7'";
  $result = mssql_query($query);


  while($row = mssql_fetch_array($result))
 {
 echo $row["Image_Data"];
 }

 mssql_close();
 ?>

我尝试了这里建议的修改后的代码(MSSQL Query issue in PHP and querying text data),但是也提出错误说“警告:mssql_query()[function.mssql-query]:message:从数据类型图像到文本的显式转换不是允许。(严重性16)“。

<?php

include('config.php');

$query= "select CAST(Image_data AS TEXT) AS Image_Data from ImagesData where Image_id = '7'";
$result = mssql_query($query);


while($row = mssql_fetch_array($result))
{
echo $row["Image_Data"];
}

mssql_close();
?>

2 个答案:

答案 0 :(得分:0)

为了存储图像,我们通常将图像的位置和名称存储在数据库中...如果图像存储在例如C:/xampp/htdocs/website/images/image.jpg中,则在数据库中,我们保存图像的名称。如果可以通过相对路径找到位置,例如:website.com/images/,我们将php中图像的路径设置为images / $ row [来自db的图像名称]。由于链接是相对的,您的图像将自动从website.com/images/image.jpg或localhost / website / images / image.jpg加载。

希望您了解如何保存图像并检索它们。我们不会在数据库中保存图像数据,我们会保存图像将在数据库中保存的位置。

答案 1 :(得分:0)

这样做

   $image = base64_decode($thumb);

        /** check if the image is db */
        if($image!=null)
        {

            $db_img = imagecreatefromstring($image);
            Header("Content-type: image/jpeg");
            imagejpeg($db_img);

        }
exit;