Silverlight 4:如何将 bmp 字节数组转换为 png 字节数组?

发布于 2025-01-04 06:15:06 字数 1089 浏览 2 评论 0原文

我有一个 wcf 服务,它返回 byte[] 中的 bmp。然而Silverlight的图像控件不支持显示bmp,所以我需要将bmp byte[]转换为png或jpg byte[]。有没有一个库可以进行这种转换?或者在 silverlight 客户端上显示 bmp byte[] 的任何其他方式?

谢谢!

Update1

为了实现转换,我会在 .NET 中执行类似的操作,

private byte[]  ConvertBmpToJpeg(byte[] bmp)
{
    using (System.Drawing.Image image = System.Drawing.Image.FromStream(new MemoryStream(bmp)))
    {
        MemoryStream ms = new MemoryStream();                
        image.Save(ms, ImageFormat.Jpeg);
        return ms.ToArray();
    }
 }

因为 System.Drawing 在 Silverlight 中不可用,我如何在 Silverlight 中实现上述代码的功能?

回答 使用下面 dj kraze 提到的库-

        ExtendedImage img = new ExtendedImage();
        var bd = new BmpDecoder();
        var je = new JpegEncoder();
        bd.Decode(img, new MemoryStream(bitmapBytes));
        MemoryStream ms = new MemoryStream();
        je.Encode(img, ms);

        BitmapImage bi = new BitmapImage();
        bi.SetSource(new MemoryStream(ms.ToArray()));
        display_ScreenShot.Source = bi;

I have a wcf service which returns a bmp in byte[]. However Silverlight's Image control doesnt support displaying bmp's so i need to convert the bmp byte[] to png or jpg byte[]. Is there a library out there which does this conversion? Or any other way of displaying the bmp byte[] on the silverlight client?

Thanks!

Update1

In order to achieve the conversion I would have done something like this in .NET

private byte[]  ConvertBmpToJpeg(byte[] bmp)
{
    using (System.Drawing.Image image = System.Drawing.Image.FromStream(new MemoryStream(bmp)))
    {
        MemoryStream ms = new MemoryStream();                
        image.Save(ms, ImageFormat.Jpeg);
        return ms.ToArray();
    }
 }

Since System.Drawing is not available in Silverlight, how do I achieve what the code does above in Silverlight?

Answer
using the library mentioned by dj kraze below-

        ExtendedImage img = new ExtendedImage();
        var bd = new BmpDecoder();
        var je = new JpegEncoder();
        bd.Decode(img, new MemoryStream(bitmapBytes));
        MemoryStream ms = new MemoryStream();
        je.Encode(img, ms);

        BitmapImage bi = new BitmapImage();
        bi.SetSource(new MemoryStream(ms.ToArray()));
        display_ScreenShot.Source = bi;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

单调的奢华 2025-01-11 06:15:06

这是一种更简单的方法。
该网站可能会提供很多帮助

图像转换

Here is an even easier way of doing it..
This site may help out a lot

Image Converting

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文