2013-09-16 19 views
0

我正在創建一個Android應用程序,我需要檢索存儲在在線MS SQL數據庫中的圖像。該表稱爲ImagesData,它包含名爲Image_Data的列,其類型爲'image'。該列的內容是十六進制值(以0x9F4AB7DA7 ....開頭)等等。每個條目大約有43679個字符(如上所述用十六進制字符填充)。我的疑問是如何檢索這個十六進制數據並將其顯示爲我的應用中的ImageView。請注意:我試圖使用PHP腳本檢索數據,但它提供了一個錯誤,指出「Warning:mssql_query()[function.mssql-query]:message:Unicode數據中的Unicode數據或ntext數據不能被髮送到(如ISQL)或ODBC 3.7版或使用DB-Library客戶更早。(嚴重性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(); 
?> 

回答

0

存儲圖像,我們通常存儲圖像的位置和名稱的分貝......如果圖像保存在如C:/xampp/htdocs/website/images/image.jpg,在數據庫中,我們保存圖像的名稱。如果可以通過相對路徑找到該位置,例如:website.com/images/,我們在php中將圖像的路徑設置爲images/$ row [來自db的圖像名稱]。由於鏈接是相對的,您的圖片將自動從網站/images/image.jpg或localhost/website/images/image.jpg加載。

希望您瞭解如何保存圖像並檢索它們。我們不保存數據庫中的圖像數據,我們保存圖像將被保存在數據庫中的位置。

+0

你沒有得到的地步。我們(如我的網站開發人員)根本不會將圖像存儲在本地服務器中。一旦用戶上傳了照片(通過以aspx編碼的網站),c#代碼將圖像轉換爲字節數組並將該字節數組存儲在數據庫中。當用戶希望查看照片時,從數據庫中提取字節數組,從該字節數組生成圖像,然後顯示給用戶。我的問題是如何從Android應用程序獲取這個字節數組?希望你明白我的意思。 –

+0

http://forums.mysql.com/read.php?2017671,27914它可能會幫助 – Dodo

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; 
+0

究竟是什麼$ thumb? –

+0

$ thumb是來自數據庫表的二進制數據 –

相關問題