2013-11-28 21 views
-3
using (MemoryStream ms = imager.CaptureImageNow().MemoryStream) 
{ 
    using (Bitmap bmp = new Bitmap(ms)) // Memory Out of Exception occurs here 
    { 
      this.PreviewImage(bmp); 

    } 
} 

嗨,我使用WinCE設備平臺3.5和創建位圖時獲取內存超出異常。我的圖像格式是JPEG。有沒有其他辦法可以避免這種例外。從WinCE設備中的MemoryStream創建位圖時,內存超出異常

+2

沒有足夠的信息 –

+3

如何避免異常:在程序中使用較少的內存,可用內存從未使用的東西,增加更多的內存到機器。 – Theraot

+0

你能發佈異常嗎?最好用堆棧跟蹤。 – elyashiv

回答

0

我已經有這個問題,試試這個:

byte[] imgDatas = null; 
using (MemoryStream ms = imager.CaptureImageNow().MemoryStream) 
{ 
    imgDatas = ms.GetBuffer(); 
} 

ImageConverter ic = new ImageConverter(); 
Image img = (Image)ic.ConvertFrom(imgDatas); 

using (Bitmap bmp = new Bitmap(img)) 
{ 
    this.PreviewImage(bmp); 
} 
+0

嗨,ImageConverter不可用,因爲我的設備有WinCE 3.5平臺 – user3042169

+0

好的,所以嘗試使用一箇中間MemoryStream加載第一個memoryStream的GetBuffer – Trax

+0

「bei Microsoft.AGL.Common.MISC.HandleAr(PAL_ERROR ar)\ r System.Drawing.Bitmap._InitFromMemoryStream(MemoryStream mstream)\ n \ n System.Drawing.Bitmap..ctor(Stream stream)\ r \ n \ n \ n \ n \ n \ n \ n \\ System.Reflection.RuntimeMethodInfo.InternalInvoke(RuntimeMethodInfo rtmi,Object obj ,BindingFlags invokeAttr,Binder binder,Object參數,CultureInfo culture,Boolean isBinderDefault,Assembly調用者,布爾verifyAccess,StackCrawlMark&stackMark)\ r \ n \ n – user3042169

0

你可以試試這個:

byte[] imgDatas = null; 
using (MemoryStream ms = imager.CaptureImageNow().MemoryStream) 
{ 
    imgDatas = ms.GetBuffer(); 
} 

MemoryStream msImg = new MemoryStream(imgDatas); 
Bitmap bmp = new Bitmap(msImg); 
msImg.Dispose(); 

PreviewImage(bmp); 
相關問題