모바일 장치를 사용하여 사진을 찍어 웹 서비스를 사용하여 보내는 응용 프로그램을 개발하고 있습니다. 그러나 내가 4 장의 사진을 찍은 후에 나는 아래 코드에서 OutOfMemoryException
을 얻고있다. 나는 GC.Collect()
이라고 전화를 시도했다. 그러나 그것도 도움이되지 않았다. 어쩌면 여기 누군가가 나에게이 문제를 다루는 방법에 대한 조언을 줄 수있을 것이다.OutOfMemoryException 모바일 장치에서
public static Bitmap TakePicture()
{
var dialog = new CameraCaptureDialog
{
Resolution = new Size(1600, 1200),
StillQuality = CameraCaptureStillQuality.Default
};
dialog.ShowDialog();
// If the filename is empty the user took no picture
if (string.IsNullOrEmpty(dialog.FileName))
return null;
// (!) The OutOfMemoryException is thrown here (!)
var bitmap = new Bitmap(dialog.FileName);
File.Delete(dialog.FileName);
return bitmap;
}
기능은 이벤트 처리기에 의해 호출됩니다 대신 메모리에 비트 맵으로 이미지를 저장하기 위해 당신이 선택하기 때문에 그래서
private void _pictureBox_Click(object sender, EventArgs e)
{
_takePictureLinkLabel.Visible = false;
var image = Camera.TakePicture();
if (image == null)
return;
image = Camera.CutBitmap(image, 2.5);
_pictureBox.Image = image;
_image = Camera.ImageToByteArray(image);
}
코드를 약간 수정하면 그림 상자 이미지를 설정하는 곳에서 먼저 기존 이미지를 모두 삭제할 수 있습니다. la if (_pictureBox.Image! = null) _pictureBox.Image.Dispose(). – ctacke