将多个图像添加到列表时的OutOfMemory

时间:2017-07-31 11:23:07

标签: c# winforms memory bitmap

我让用户选择图像,这些图像存储在一个列表中。 当添加20个图像(或多或少)时,我得到一个outOfMemory错误。

我使用的图像各为13MB,因此添加20张图像时,为260 MB 被加载到内存中。这不是很多,为什么会崩溃?

private void btnBrowse_Click(object sender, EventArgs e)
{
        using (OpenFileDialog dlg = new OpenFileDialog())
        {
            dlg.Title = "Open Image";

            dlg.Filter = "Image Files (*.bmp;*.jpg;*.jpeg,*.png)|*.BMP;*.JPG;*.JPEG;*.PNG";

            if (dlg.ShowDialog() == DialogResult.OK)
            {
                ++totalNrPages;

                if (cbxInsertPage.Checked)
                {
                    //add page after pageIndex
                    Image img = Bitmap.FromFile(dlg.FileName);
                    scanController.InsertPage(img, pageIndex + 1);
                    ChangePage(pageIndex + 1);
                }
                else
                {
                    //add page to the end
                    scanController.AddPage(Bitmap.FromFile(dlg.FileName));
                    ChangePage(totalNrPages - 1);
                }
            }
        }
}

insertPage方法:

private List<ScannedPage> scannedPages = new List<ScannedPage>();

public void InsertPage(Image img, int pageIdx)
{
   scannedPages.Insert(pageIdx, new ScannedPage(img));
}

0 个答案:

没有答案