【问题标题】:Get image stored in online database as type 'image' as a byte array获取存储在在线数据库中的图像,类型为“图像”,作为字节数组
【发布时间】:2013-09-16 15:06:29
【问题描述】:

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

【问题讨论】:

    标签: php android sql sql-server


    【解决方案1】:

    为了存储图片,我们通常将图片的位置和名称存储在数据库中...如果图片存储在例如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 加载。

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

    【讨论】:

    • 你没有明白这一点。我们(就像我的网站开发人员一样)根本不将图像存储在我们的本地服务器中。一旦用户上传了一张照片(通过以 aspx 编码的网站),c# 代码将图像转换为字节数组并将该字节数组存储在数据库中。当用户希望查看照片时,从数据库中获取字节数组,从该字节数组生成图像,然后显示给用户。我的问题是如何从 android 应用程序中获取这个字节数组?希望你明白我在说什么。
    【解决方案2】:

    这样做

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

    【讨论】:

    • $thumb 到底是什么?
    • $thumb 是 db 表中的二进制数据
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多