2010-03-09 62 views
7

在C#中有沒有辦法做這種轉換並返回?將System.Drawing.Image轉換爲System.Windows.Controls.Image?

我有一個WPF應用程序,它有一個圖像控件。我試圖將該控件中的圖像保存到SQL數據庫中。

在我的實體模型中,我的數據庫中的圖片列的數據類型是byte[]。所以我找到了一種將System.Drawing.Image轉換爲byte[]的方法。但我還沒有找到一種方法來從System.Windows.Controls.Image轉換爲byte[]

所以這就是爲什麼我現在需要做上述轉換。

回答

3

那麼,一個是圖像,一個是顯示圖像的控件,所以我不認爲兩者之間存在轉換。但是,您可以將... Controls.Image的源設置爲... Drawing.Image。基於

編輯上更新

這是否你所需要的 - http://msdn.microsoft.com/en-us/library/ms233764%28VS.100%29.aspx

+0

不能這麼做......任何想法? – 2010-03-09 16:14:28

+0

你能提供一些關於你的場景的更多細節嗎?我很難理解你爲什麼需要這樣做。 – 2010-03-09 16:15:50

+0

參見上面的更多細節 – 2010-03-09 16:27:51

10

如果你有一個字節數組,表示WPF可以解碼文件(BMP,JPG,GIF,PNG,TIF ,ICO),你可以做到以下幾點:

BitmapSource LoadImage(Byte[] imageData) 
{ 
    using (MemoryStream ms = new MemoryStream(imageData)) 
    { 
     var decoder = BitmapDecoder.Create(ms, 
      BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad); 
     return decoder.Frames[0]; 
    } 
} 

同樣地,將其轉換回,你可以做到以下幾點:

byte[] SaveImage(BitmapSource bitmap) 
{ 
    using (MemoryStream ms = new MemoryStream()) 
    { 
     var encoder = new BmpBitmapEncoder(); 
     encoder.Frames.Add(BitmapFrame.Create(bitmap)); 
     encoder.Save(ms); 

     return ms.GetBuffer(); 
    } 
} 
+0

你救了我的命 – joshua 2012-07-18 13:41:50

相關問題