vb.net - 将图片框图像导出到本地磁盘
问题描述
我想将图片框中的图像导出到 HDD 中的某个位置,该图像从 MSSQL 数据库表中的图像类型列中设置为图片框。
我已经编写了以下代码来完成此任务。但是,我通过 try catch 代码得到了一个通用的 GDI+ 错误。
此代码将图片框中的图像导出到保存文件对话框指定的位置。
Dim fileName As String = exportDialog.FileName
Dim expImage As Image = picBox.BackgroundImage
Try
If expImage IsNot Nothing Then
expImage.Save(fileName)
MessageBox.Show("File exported successfully")
End If
Catch ex As Exception
__WRITELOG(ex)
End Try
这是从数据库中获取图像并将其转换为能够在图片框中显示的代码
If Not IsDBNull(img) Then
Using mStream As New MemoryStream(img, 0, img.Length)
mStream.Write(img, 0, img.Length)
__IMAGE_FROM_STREAM = Image.FromStream(mStream, True)
'//This __IMAGE_FROM_STREAM is set as the image into the picturebox & it works....!
End Using
End If
我已经检查了这个问题,但是大多数其他人在保存从磁盘中的某个位置而不是数据库中加载到图片框的文件时都遇到了 GDI+ 错误。还有一些解决方案是关于不适用于这种情况的磁盘锁。任何支持/建议表示赞赏。
解决方案
我不是 100% 确定,但我认为问题在于您正在处理Stream
您正在创建的内容Image
。使用语句通常很好,Using
因为它意味着自动处理创建的对象,但在这种情况下这是不可取的。保留Stream
周围,只有在你完成并处理它时才处理它Image
。例如,您可以创建一个自定义控件,该控件继承PictureBox
并具有源属性Stream
,允许您将其与Image
.
Imports System.IO
Public Class PictureBoxEx
Inherits PictureBox
Private _imageStream As Stream
Public WriteOnly Property ImageStream As Stream
Set
_imageStream = Value
Image = Image.FromStream(Value)
End Set
End Property
Public Sub DisposeImageAndStream()
Image?.Dispose()
_imageStream?.Dispose()
End Sub
End Class
推荐阅读
- html - 偏移 html 滚动行为
- php - PHP方法签名没有参数方法调用有一个参数没有警告
- python - 使用诗歌为车轮指定 Python 标记
- jquery - 控制器中的参数在 asp.net mvc 中给出空值异常
- xml - 如何以任何顺序拥有多个元素?
- android - Android位图无法解释的内存使用情况
- python - Python循环温度
- java - 在recyclerview的嵌套recyclerview中的嵌套列表中添加项目
- javascript - 尝试导入错误:“react-table”不包含默认导出(导入为“ReactTable”)
- haskell - Megaparsec:嵌套缩进块吃太多