2014-09-26 2 views
0

ImageList 컬렉션에 이미지를 추가하려고하는데이 성가신 "Out of Memory"예외가 발생합니다. 나는 그것에 대해 다른 사람들의 질문을 읽었지 만, 나는 나의 이미지가 손상된 것으로 생각하지 않는다. 이미지는 단색 BMP (라벨 프린터 용)이며 1kb 미만입니다.Out of Memory When Directory.GetFiles

For Each path As String In Directory.GetFiles("C:\Users\Public\Nitek\Imagens Tratadas") 
    ImageList1.Images.Add(Image.FromFile(path)) 
Next 

이 디렉토리에는 두 개의 이미지 만 있습니다. 내가 할 수있는 일이 있니?

편집 :http://i.stack.imgur.com/39RNz.png -이 사진 중 하나입니다.

감사합니다 :)에서

+1

코드는 괜찮습니다. 이미지 중 하나에 문제가있을 수 있습니다. 각각의 이미지에 대해 Try ... Catch 블록을 넣으십시오 (For Each Loop 내부) – Eminem

+0

디렉토리에 다른 파일 (예 : 일반적으로 숨겨져있는 Thumbs.db 파일)이 있으면 프로그램이 ImageList에로드하려고 시도하십시오. 당신은 그렇게하고 싶지 않습니다. 각 파일에서 [Path.GetExtension] (http://msdn.microsoft.com/en-us/library/system.io.path.getextension%28v=vs.110%29.aspx)을 사용하고 있는지 확인하십시오 당신이 원하는 유형의, 당신은 오류를 피할 수 있어야합니다. –

+0

Andrew Morton, 'Thumbs.db'파일이었습니다. Path.GetExtension을 사용하여 파일을 검사합니다. 고마워요 –

답변

0

: http://msdn.microsoft.com/en-us/library/stf701f5.aspx

관리 GDI + 다음과 같은 파일 형식을 지원하는 내장 인코더와 디코더가 있습니다

BMP 

GIF 

JPEG 

PNG 

TIFF 

파일은 이미지가 배치 될 때까지 잠긴 상태를 .

파일에 유효한 이미지 형식이 없거나 GDI +가 파일의 픽셀 형식을 지원하지 않으면이 메서드는 OutOfMemoryException 예외를 throw합니다.

jpeg와 같은 다른 형식으로 파일을 저장해보십시오.

0

Andrew Morton의 도움으로이 문제를 해결할 수있었습니다. ImageList에 이미지를 추가하는 조건을 만들어야했습니다.

For Each caminho As String In Directory.GetFiles("C:\Users\Public\Nitek\Imagens") 
    If Path.GetExtension(caminho) = ".bmp" Then 
     ImageList1.Images.Add(Image.FromFile(caminho)) 
    End If 
Next 

Path.GetExtension 속성을 사용하여에서 Thumbs.db 파일을 재정의 할 수 있습니다.

감사합니다 :)

+0

환영합니다 :) 확장자가'.bmp' 인 파일 만 원한다면'Directory.GetFiles ("C : \ Users \ Public \ Nitek \ Imagens", "* .bmp")'. –