silverlight - 如何将 ImageSource 转换为 byte[] 并返回到 ImageSource?

标签 silverlight

我需要从用户那里获得图像文件路径并将图像存储在我的 sql server 数据库中。

我从用户那里获取文件并使用方法转换为 byte[]

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 );
异常信息为'catastropic fail'

最佳答案

也许 SetSource 不会读取 MemoryStream 但会链接到它,当您稍后使用 BitmapSource 时,silverlight 想要使用 MemoryStream 来获取图像,但由于您的使用,它已经被处理掉了,不再有效。

关于silverlight - 如何将 ImageSource 转换为 byte[] 并返回到 ImageSource?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5894170/

相关文章:

c# - 无法从文件夹中获取文件

silverlight - 如何在 Visual Studio 中更改 Silverlight 项目的默认图像位置

linq - 基于组合框值构建动态 LINQ 查询

c# - Silverlight 到 WPF 转换器

silverlight - 在 ASP.Net MVC 的 View 中使用 Silverlight - 一个坏主意?

javascript - Silveright调用javascript问题?

winforms - 在 Silverlight for Windows Phone 7 中打开新表单

wpf - 有没有办法简化 WPF 和 Silverlight 中依赖属性的设置?

silverlight - 与 Silverlight 相比,GET 可以给我带来哪些优势?

javascript - 寻找将 WEB 应用程序与 Silverlight 和 VB6 集成的客户端集成解决方案