Directory.GetFiles时内存不足

时间:2014-09-26 17:56:18

标签: vb.net memory imagelist

我正在尝试在ImageList集合上添加图像,但我得到了这个令人讨厌的“Out of Memory”异常。我已经阅读了其他一些有关它的问题,但我不认为我的图像已损坏。图像是单色BMP(用于标签打印机),并且小于1kb。

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 - 这是其中一张照片。

谢谢:)

2 个答案:

答案 0 :(得分:0)

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

托管GDI +具有支持以下文件类型的内置编码器和解码器:

BMP

GIF

JPEG

PNG

TIFF 

文件保持锁定状态,直到图像被丢弃。

如果文件没有有效的图像格式,或者GDI +不支持文件的像素格式,则此方法会抛出OutOfMemoryException异常。

你可以尝试以不同的格式保存文件以查看它是否有效(如jpeg)。

答案 1 :(得分: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文件。

谢谢:)