0

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

注意:我尝试使用 PHP 脚本检索数据,但它给出了一条错误消息:“警告:mssql_query() [function.mssql-query]: 消息:Unicode 数据在仅 Unicode 排序规则或 ntext 数据中无法发送到客户端使用 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]:消息:从数据类型图像到文本的显式转换是不允许。(严重性 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();
?>
4

2 回答 2

0

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

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

于 2013-09-18T16:20:37.807 回答
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;
于 2013-11-21T16:31:25.997 回答