Silverlight 4:将图像转换为byte []

时间:2011-03-18 11:56:35

标签: c# .net silverlight image silverlight-4.0

我已经在.NET 4.0中找到了如何做到这一点,但我认为Silverlight中不存在JpegBitmapEncoder:

MemoryStream memStream = new MemoryStream();              
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(imageC));
encoder.Save(memStream);
var bytes = memStream.GetBuffer();

如何在silverlight中将图像转换为bytes []?

更新

我有一个Contact模型,它有一个Photo属性。每当我添加一个新的联系人时,我想加载一个本地默认图像并将其转换并将Photo属性设置为它。

var bitmapImage = new BitmapImage
                            {
                                UriSource = new Uri("pack://application:,,,/xxx;component/Images/default.JPG")
                            };
            var image = new Image{Source = bitmapImage};

这是首先加载图像的正确方法吗?

2 个答案:

答案 0 :(得分:5)

使用

myImage.Save(memStream, ImageFormat.Jpeg);
return memStream.ToArray();

更新

确定图片是BitmapImage

BitmapImage似乎没有公开保存图像的功能。解决方案是从嵌入式资源中获取图像:

Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourcePath);
byte[] buffer = new byte[s.Length];
s.Read(buffer, 0, buffer.Length);

答案 1 :(得分:0)

看看这个图书馆:Imagetools

它包含一些不错的实用程序和jpg和png编码器,