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

3

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

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 属性。每当我添加一个新的联系人时,我想要加载一个本地默认图像并将其转换为 bytes[],然后将其设置为 Photo 属性。

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

这是加载图片的正确方法吗?

它可能存在,但您需要添加正确的引用才能使用它。而我不知道是哪一个。 - Aidiakapi
不好意思,Silverlight 中不存在这个。 - Houman
没关系,这只是针对WPF而不是Silverlight的。 - Aidiakapi
2个回答

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);

请查看我的更新,我在图像中没有看到Save()方法,除非我在这里做错了什么。 - Houman
抱歉,我不明白你的解决方案应该如何工作。你的图像来自System.Drawing.Image命名空间。据我的理解,Silverlight中甚至没有这个命名空间。 - Houman
我尝试了以下代码但没有成功:Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream("../Images/default.JPG");如果我的图片URI是这样的,那么我应该在哪里放置它呢?"pack://application:,,,/xxx;component/Images/default.JPG" 相对路径不起作用 :( - Houman
请看这里:https://dev59.com/HHVD5IYBdhLWcg3wTJrF - Aliostad
我现在感觉相当愚蠢。但是我无法让它工作:Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream("SalesContactManagement.Modules.NavigationModule.Images.default.JPG");当我直接在代码中输入时,我期望看到路径:SalesContactManagement.Modules.NavigationModule.Images,但是找不到Images。我已将默认图像设置为嵌入式资源,并且还测试了它作为资源。没有运气... - Houman
显示剩余4条评论

0

看看这个库:Imagetools

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


Erno,很好的解决方案,但即使使用该库中的ExtendedImage,它如何帮助我将图像转换为byte[]? - Houman
这些编码器确实是必不可少的。我终于让它工作了。 - Houman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接