2011-06-25 46 views
1

public Image Image {get;組; }鑄造時使用的圖像類不正確;我如何正確地做到這一點?

Image=(Image)randomImageFromCommentsClass.Image; 

我得到這個:

無法轉換爲System.Drawing.Image到System.Web.UI.WebControls

我想我進口了錯誤的命名空間(System.Drawing中)..這可能是錯誤的。我想要做的是將圖像類型從數據庫轉換爲圖像對象。上述

public class Comments 
{ 
    public Image Image { get; set; } 
     Image = DBNull.Value.Equals(dr["Avatar"]) ? null: (Image)dr["Image"]; 

此圖片屬性是在Visual Studio 2010

不知怎的,一個不同的類代碼文件中投fails..how做我解決這個問題?

+0

是的,它聽起來像錯誤的命名空間。您可以使用完全限定版本...只需在類型中包含名稱空間。 – mpen

回答

0

除非您正在投射的對象是另一個對象的實例,否則絕對沒有辦法投射。

可以字節數組隱蔽到圖像使用此snipet:

public Image byteArrayToImage(byte[] byteArrayIn){ 
    MemoryStream ms = new MemoryStream(byteArrayIn); 
    Image returnImage = Image.FromStream(ms); 
    return returnImage 
} 

,以顯示與您的WebControl動態創建的映像,您需要在此處理程序的詳細信息:

Serving Dynamic Content with HTTP Handlers

+0

什麼是數據庫內的圖像的類型?它屬於繪圖或WebControls命名空間 – Matrix001

+0

它既不屬於圖像,也以字節數組的形式存儲在數據庫中。 –

+0

哈哈..任何將字節數組轉換爲圖像?!?從繪圖類,然後把它放到Image webcontrol? – Matrix001

0

如果您在談論SQL的Image數據類型,那麼這些圖像將以byte[]格式存儲,因此您需要將數據庫中的數據轉換爲byte []變量,然後使用FileStream創建一個新的在您的fileSystem中臨時映像文件,然後將其分配給任何圖像控件或任何您想要執行的操作。

您是否試圖將存儲在數據庫中的圖像分配給ASP.NET中的Image Control?

我不認爲有任何的方式轉換成字節[]到System.Drawing中 所以這裏是解決方案,我用:

byte[] ImageData; 
string filePath = @"~\Image.jpeg"; //path or temporary Image 
using (con) 
{ 
    con.Open(); 
    SqlCommand getImageCmd = new SqlCommand("/* your SQL query to get Image from database*/ ", con); 
    ImageData = (byte[])getImageCmd.ExecuteScalar(); 
    con.Close(); 
} 
FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate); 
using (fs) 
{ 
    foreach (byte b in ImageData) 
    { 
     fs.WriteByte(b); 
    } 
    fs.Flush(); 
    fs.Close(); 
} 

ImageControl.ImageUrl = "~/Image.jpeg"; // assign that temp Image to Image Control 
+0

是的。我試圖做到這一點1)從數據庫中獲取圖像2)將其轉換爲圖像繪製3)將其轉換爲網頁控制..或者可能是如果有快捷方式簡單地將其轉換爲繪圖圖像..直線走 – Matrix001

+0

試試上面的代碼,並告訴它是否有效 –

+0

我會試試看。在稍後的時間..感謝提供給我一個方向 – Matrix001

相關問題