Silverlight 如何将ImageSource转换为字节[]并返回到ImageSource?

Silverlight 如何将ImageSource转换为字节[]并返回到ImageSource?,silverlight,Silverlight,我需要有来自用户的图像文件路径,并将图像存储在我的sql server数据库中 我从用户处获取文件,并使用以下方法将其转换为字节[] public static byte[] ImageToByteArray( BitmapSource bitmapSource ) { byte[] imgAsByteArray = null; if( bitmapSource != null ) { imgAsByteArray

我需要有来自用户的图像文件路径,并将图像存储在我的sql server数据库中

我从用户处获取文件,并使用以下方法将其转换为字节[]

public static byte[] ImageToByteArray( BitmapSource bitmapSource )
    {
        byte[] imgAsByteArray = null;

        if( bitmapSource != null )
        {
            imgAsByteArray = ( new WriteableBitmap( ( BitmapSource )bitmapSource ) ).Pixels.SelectMany( p => new byte[] 
            { 

                ( byte )  p        , 
                ( byte )( p >> 8  ), 
                ( byte )( p >> 16 ), 
                ( byte )( p >> 24 ) 

            } ).ToArray(); 
        }

        return imgAsByteArray;
    }
但现在我无法将其转换回BitmapSource。 我编写的用于将其转换回的代码会引发异常

守则:

public static BitmapSourcebyteArrayToImage( byte[] imageBytes )
    {
        BitmapImage bitmapImage = null;
        using( MemoryStream ms = new MemoryStream( imageBytes, 0, imageBytes.Length ) )
        {
            bitmapImage = new BitmapImage();
            bitmapImage.SetSource( ms );    
        }

        return (BitmapSource)bitmapImage;
    }
我在bitmapImage.SetSource(ms)行上得到异常

异常信息为“灾难性失败”

可能
SetSource
不读取MemoryStream,而是链接到它,当您稍后使用BitmapSource时,silverlight希望使用MemoryStream获取图像,但由于您的使用,它已被释放且不再有效。

哪一行导致异常?行bitmapImage.SetSource(毫秒);可能重复的数据看起来正常-我看不到任何地方可以进行数据处理当退出您使用它隐式调用的区域时。
ms.Dispose()
。这就是使用
的目的。但由于你的例外发生在这一点上,我想这不是答案。