【问题标题】:Need serialize bitmap image silverlight需要序列化位图图像 silverlight
【发布时间】:2012-01-02 13:15:26
【问题描述】:

我需要用 bitmapImage 序列化自定义类(现在由 xmlIgnore 标记)。 我正在使用 xmlSerialization,但我认为这很糟糕。你有一些想法如何序列化我的类吗??也许你可以提供一些简单的例子??

class X
{
private BitmapImage someImage;
public BitmaImage{get;set}
}

实际上稍后我将使用 WCF 服务。 谢谢)

【问题讨论】:

    标签: wpf silverlight wcf serialization bitmapimage


    【解决方案1】:

    您可以公开image as a byte array,例如:

    public byte[] ImageAsBytes
    {
        get { return BytesFromImage(someImage); }
        set { someImage = ImageFromBytes(value); }
    }
    

    您当然可以使用流和StreamSource 属性进行转换。

    【讨论】:

    • 但我在 BitmapImage 找不到 StreameSource
    • @ThomasWingfield - 这可能是因为您使用的是 Silverlight(下一次,用正确的标签标记您的问题!)
    【解决方案2】:

    您可以将图像转换为Base64 字符串。来自here的例子:

    //Convert image to the string
    public string ImageToBase64(Image image, System.Drawing.Imaging.ImageFormat format)
    {
       using (MemoryStream ms = new MemoryStream())
       {
         // Convert Image to byte[]
         image.Save(ms, format);
         byte[] imageBytes = ms.ToArray();
    
         // Convert byte[] to Base64 String
         string base64String = Convert.ToBase64String(imageBytes);
         return base64String;
       }
    }
    
    //when deserializing, convert the string back to an image
    public Image Base64ToImage(string base64String)
    {
       // Convert Base64 String to byte[]
       byte[] imageBytes = Convert.FromBase64String(base64String);
       MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);    
       // Convert byte[] to Image
       ms.Write(imageBytes, 0, imageBytes.Length);
       Image image = Image.FromStream(ms, true);
       return image;
    }
    

    【讨论】:

    • 但是 Silverlight 中的图像类没有“保存”方法!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 2010-12-04
    相关资源
    最近更新 更多