获取存储在在线数据库中的图像,类型为字节数组的“图像”


Get image stored in online database as type 'image' as a byte array

我正在创建一个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();
 ?>

我尝试了此处建议的修改代码(PHP 中的 MSSQL 查询问题和查询文本数据),但这也给出了一个错误,说"警告: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();
?>

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

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

像这样做

   $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;