2012-03-15 114 views
0

我有這樣一個類:如何從byte []創建FileStreame?

class person 
{ 
    public string Name{get;set;} 
    public byte[] PersonImage{get;set;} 
} 

當我加載我一個人從數據庫中我想顯示在圖像控制PersonImage,所以我想從我的byte []創建的BitmapImage:

var bitmapImage = new BitmapImage(); 

bitmapImage.BeginInit(); 
var filestream = new MemoryStream(PersonImage); 
bitmapImage.StreamSource = filestream; 

bitmapImage.EndInit();// I have Exception in this line 

我的例外是:

否成像合適的用於完成此操作部件被發現。

--edite 我內心的例外是:

內部異常:從HRESULT異常:0 * 88982F50

+0

你有沒有看着 - http://stackoverflow.com/questions/3886849/錯誤在我的字節到wpf-bitmapimage轉換 - 它可能有幫助(如何提問者做他們的字節圖像流轉換) – kaj 2012-03-15 17:24:15

+1

可能重複的[創建新的FileStream出一個字節數組](http:// stackoverflow.com/questions/6076192/create-new-filestream-out-of-a-byte-array) – RedFilter 2012-03-15 17:24:24

+1

你最好看看寫入數據到dbase的代碼。這個問題不是其他方面的問題。 – 2012-03-15 17:28:24

回答

1

假設PersonImage真的代表圖像嘗試

有效 byte[]
var bitmapImage = new BitmapImage(); 

bitmapImage.BeginInit(); 
var somestream = new MemoryStream(PersonImage); 
somestream.Position = 0; // "rewind" stream to start... 
bitmapImage.StreamSource = somestream; 

bitmapImage.EndInit(); 
+0

你的代碼示例不工作 – 2012-03-15 17:30:48

+0

@mtaboy這意味着'PersonImage'很可能不包含有效的圖像......你需要檢查'PersonImage'包含的內容 – Yahia 2012-03-15 17:31:50

+0

你是對的。 PersonImage不是有效的字節[] – 2012-03-17 12:54:33

0

您的圖片可能是n不支持格式。請嘗試以下方法:

public BitmapImage GetBitmapImage(byte[] imageData) 
{ 
    BitmapImage bitmapImage = new BitmapImage(); 

    using (MemoryStream imageStream = new MemoryStream(imageData)) 
    using (Image image = Image.FromStream(imageStream)) 
    using (MemoryStream convertedImageStream = new MemoryStream()) 
    { 
     bitmapImage.BeginInit(); 

     image.Save(convertedImageStream, ImageFormat.Png); 

     bitmapImage.CacheOption = BitmapCacheOption.OnLoad; 
     bitmapImage.StreamSouce = convertedImageStream; 

     bitMapImage.EndInit(); 
    } 

    return bitmapImage; 
} 

請務必包括using語句文件的頂部如下:

using System.Drawing; 
using System.Drawing.Imaging;