2012-03-15 122 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;