【问题标题】:Silverlight 4 : Converting image into byte[]Silverlight 4:将图像转换为字节 []
【发布时间】:2011-03-18 11:56:34
【问题描述】:

我在 .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};

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

【问题讨论】:

  • 它可能确实存在,但您需要添加正确的引用才能使用它。我不知道是哪一个。
  • 没有伙伴。这在 Silverlight 中不存在。
  • 没关系,这只是针对 WPF 而不是 Silverlight。

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


【解决方案1】:

使用

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() 方法,除非我在这里做错了什么。
  • 好吧,正如我在上面发布的那样,它是一个 .JPG
  • 抱歉,我不明白您的解决方案应该如何工作。您的 Image 来自 System.Drawing.Image 命名空间。据我了解,您甚至在 Silverlight 中都没有。
  • 试试我发布的这个解决方案。使用命名空间格式而不是 silverlight fromat 中的路径。
  • 我试过这个没有成功: Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream("../Images/default.JPG");如果我对图片的URI是这样的,我应该在里面放什么? "pack://application:,,,/xxx;component/Images/default.JPG" 相对路径不起作用:(
【解决方案2】:

看看这个库:Imagetools

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

【讨论】:

  • Erno,简洁的解决方案,但即使使用该库中的 ExtendedImage,它如何帮助我将图像转换为 byte[] ?
  • 这个编码器确实是必不可少的。我终于搞定了。
猜你喜欢
  • 1970-01-01
  • 2013-04-18
  • 1970-01-01
  • 2011-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多