2013-11-28 4 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

내 장치 WinCE 3.5 플랫폼 – user3042169

+0

좋아, ImageConverter 사용할 수 없습니다. 따라서 첫 번째 memoryStream – Trax

+0

GetBuffer 함께로드 된 중간 MemoryStream 사용하려고 "bei Microsoft.AGL.Common.MISC.HandleAr (PAL_ERROR ar) \ r System.Drawing.Bitmap._InitFromMemoryStream (MemoryStream mstream) System.Drawing.Bitmap..ctor (스트림 스트림) \ r \ nbei \ r \ nbei System.Reflection.RuntimeMethodInfo.InternalInvoke (RuntimeMethodInfo rtmi, Object obj , BindingFlags invokeAttr, 바인더 바인더, 개체 매개 변수, CultureInfo 문화권, 부울 isBinderDefault, 어셈블리 호출자, 부울 verifyAccess, StackCrawlMark & ​​stackMark) \ r \ nbei – 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);