목록에 약 60 장의 사진을로드하려고합니다. 각 그림은 약 1MB입니다. 20 장의 그림은 아무런 문제가 없지만 아래의 코드 줄에서 메모리 부족 예외가 발생합니다. 나는 관련 이슈들을 광범위하게 검색했다. 핵심 단어와 스트림을 "사용하는"것에 대해 언급 한 적이 있지만, 초보자부터 누군가 나를 기쁘게 도와 줄 수있다.Imagefrom.File(). 메모리 부족 예외
Image image = Bitmap.FromFile(Filename);
여기에 내 코드
나는 C#을 사용하고private void LoadBtn_Click_1(object sender, EventArgs e)
{
OpenFileDialog newDialog = new OpenFileDialog();
if (newDialog.ShowDialog() == DialogResult.OK)
{
images.Clear();
string dirPath = System.IO.Path.GetDirectoryName(newDialog.FileName.ToLower());
DirectoryInfo di = new DirectoryInfo(dirPath);
FileInfo[] finfos = di.GetFiles("*.*");
foreach (FileInfo fi in finfos)
{
string ext = fi.Extension.ToLower();
if ((ext.Equals(".png")) || (ext.Equals(".jpg")) || (ext.Equals(".tif")) || (ext.Equals(".gif")))
{
string Filename = fi.FullName;
Image image = Bitmap.FromFile(Filename); //exception occurs HERE
images.Add(image);
//this.imageList1.Images.Add(image);
//image.Dispose();
}
}
}
pictureBox3.Image = images[0];
}
, 창 형태입니다. 덕분에
http://stackoverflow.com/questions/2610416/is-there-a-reason-image-fromfile-throws-an-outofmemoryexception-for-an-invalid-i –
답장을 보내 주셔서 감사합니다. 하지만 거기에 대한 답은 내 문제와 일치하지 않습니다. 내 파일이 손상되지 않았으므로 문제는 실제로로드되는 전체 파일의 크기와 관련이 있습니다. 이 기억 문제에 대한 방법에 관한 이야기가 있다면 생각하고 있었기 때문에 내가 원하는 것을하는 깔끔한 그림을 보았습니다. 예를 들어,이 프로젝트 "https://sourceforge.net/projects/picturefilter/"는 정확히 원하는 것을 수행하지만 코드에 액세스 할 수 없습니다. .exe 파일 만 사용 가능 – Basco