モバイルデバイスを使用して写真を撮ってWebサービスを使って送信するアプリケーションを開発しています。しかし、私は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);
}
私は少しあなたのコードを変更したい - それは、ピクチャボックスの画像を設定する場合、私は、既存の画像をまず処分したいと思います。(_pictureBox.Image!= null)_pictureBox.Image.Dispose()。 – ctacke