2012-01-02 10 views
2

bitmapImage(xmlIgnoreでタグ付けされています)でカスタムクラスをシリアライズする必要があります。 私はxmlSerializationを使用していますが、私はそれが悪いと思っています。あなたはいくつかのアイディアを持っていますが、私のクラスをシリアライズするにはどうすればいいですか?bitmap image silverlightをシリアライズする必要があります

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

実際は後で私はWCFサービスを使用します。 ありがとう)

答えて

2

あなたはimage as a byte arrayを公開することができ、例えば:

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

あなたは当然の流れとStreamSourceプロパティを使用して戻って変換することができます。

+0

BitmapImageでStreameSourceを見つけることができません –

+1

@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; 
} 
+0

Silverlightの画像クラスには「保存」メソッドがありません! – alexkovelsky

関連する問題