gpt4 book ai didi

vb.net - 加载图像时出现内存不足异常

转载 作者:行者123 更新时间:2023-12-02 07:08:50 26 4
gpt4 key购买 nike

我使用以下代码将图像作为缩略图加载到 FlowLayoutPanel 控件。不幸的是,我遇到了 OutOfMemory 异常。

正如您已经猜测的那样,内存泄漏是在第 行

处发现的
 Pedit.Image = System.Drawing.Image.FromStream(fs)

那么我该如何优化以下代码呢?

 Private Sub LoadImagesCommon(ByVal FlowPanel As FlowLayoutPanel, ByVal fi As FileInfo)
Pedit = New DevExpress.XtraEditors.PictureEdit
Pedit.Width = txtIconsWidth.EditValue
Pedit.Height = Pedit.Width / (4 / 3)
Dim fs As System.IO.FileStream
fs = New System.IO.FileStream(fi.FullName, IO.FileMode.Open, IO.FileAccess.Read)
Pedit.Image = System.Drawing.Image.FromStream(fs)
fs.Close()
fs.Dispose()
Pedit.Properties.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Zoom

If FlowPanel Is flowR Then
AddHandler Pedit.MouseClick, AddressOf Pedit_MouseClick
AddHandler Pedit.MouseEnter, AddressOf Pedit_MouseEnter
AddHandler Pedit.MouseLeave, AddressOf Pedit_MouseLeave
End If

FlowPanel.Controls.Add(Pedit)
End Sub

更新:加载大量图像(3264x2448px,300dpi - 每个图像约为 3Mb)时出现问题

最佳答案

Image.FromFile 的文档(与您的 FromStream 相关)表示,如果文件无效,它将抛出 OutOfMemoryException图像格式或者 GDI+ 不支持像素格式。您是否可能尝试加载不受支持的图像类型?

此外,Image.FromStream 的文档说您必须在图像的生命周期内保持流打开,因此即使您的代码加载了图像,您也可能会收到错误,因为您在图像仍处于事件状态时关闭文件。请参阅http://msdn.microsoft.com/en-us/library/93z9ee4x.aspx .

关于vb.net - 加载图像时出现内存不足异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4853615/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com