Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 从picturebox保存图像_Vb.net - Fatal编程技术网

Vb.net 从picturebox保存图像

Vb.net 从picturebox保存图像,vb.net,Vb.net,使用此代码从PictureBox保存图像。 通过保存文件并为其添加名称 我面临的问题是,当调整图像时,会出现以下错误:-gdi中出现一般错误+ 我的代码 show image Using fs As New System.IO.FileStream("path", IO.FileMode.Open, IO.FileAccess.Read) PIC_PARTA.Image = System.Drawing.Image.FromStream(fs) End Using 在

使用此代码从PictureBox保存图像。 通过保存文件并为其添加名称 我面临的问题是,当调整图像时,会出现以下错误:-gdi中出现一般错误+

我的代码

show image

Using fs As New System.IO.FileStream("path", IO.FileMode.Open, IO.FileAccess.Read) PIC_PARTA.Image = System.Drawing.Image.FromStream(fs)  End Using 

在这个阶段,这不是一个完整的答案,但它包含了大量的代码,所以我将作为答案发布,然后根据需要更新或删除

我刚刚尝试了这段代码,四次保存都成功了,尽管我认为有些可能没有:

Imports System.IO
公开课表格1
Private ReadOnly folderPath为String=Path.Combine(My.Computer.FileSystem.SpecialDirectories.MyPictures,“测试”)
私有子表单1_Load(发送方作为对象,e作为事件参数)处理MyBase.Load
PictureBox1.Image=Image.FromFile(Path.Combine(folderPath,“Picture1.png”))
使用fs=File.OpenRead(Path.Combine(folderPath,“Picture2.png”))
PictureBox2.Image=Image.FromStream(fs)
终端使用
PictureBox3.ImageLocation=Path.Combine(folderPath,“Picture3.png”)
PictureBox4.Load(Path.Combine(folderPath,“Picture4.png”))
端接头
私有子按钮1\u单击(发送者作为对象,e作为事件参数)处理按钮1。单击
尝试
PictureBox1.Image.Save(Path.Combine(folderPath,“Output1.png”))
特例
Show(例如ToString())
结束尝试
端接头
私有子按钮2\u单击(发送者作为对象,e作为事件参数)处理按钮2。单击
尝试
PictureBox2.Image.Save(Path.Combine(folderPath,“Output2.png”))
特例
Show(例如ToString())
结束尝试
端接头
私有子按钮3\u单击(发送者作为对象,e作为事件参数)处理按钮3。单击
尝试
PictureBox3.Image.Save(Path.Combine(folderPath,“Output3.png”))
特例
Show(例如ToString())
结束尝试
端接头
私有子按钮4\u单击(发送者作为对象,e作为事件参数)处理按钮4。单击
尝试
PictureBox4.Image.Save(Path.Combine(folderPath,“Output4.png”))
特例
Show(例如ToString())
结束尝试
端接头
末级
你能用你自己的文件夹里的图片测试一下吗,看看你能不能得到同样的结果

请注意,
Image.FromFile
选项将锁定文件,直到您处理
图像
。我以前见过这样的例子:试图保存使用
Image创建的
Image
。FromStream
会生成您提到的错误消息,因为它以后无法再次访问该流
Image.FromFile
避免了这一点,但也有其自身的缺点


直接使用
FileStream
的代码比您的代码更简单,因此效果更好,但设置
ImageLocation
或调用
Load
也更简单,因此效果更好。我建议您使用这两个选项中的一个,看看您是否仍然存在问题。

1。仅当
SaveFileDialog.ShowDialog()==DialogResult.OK
时,才应保存图像。2.您需要验证
PIC\u PARTA.Image
是否为有效的
Bitmap
对象。3.在调用
Dispose
之前,您没有重新分配
pic
,因此您实际上是在处理PictureBox中的当前图像,而您不应该这样做。4.您不应该直接调用
.Dispose
,而是使用
块。5.添加一个
Try/Catch
块来优雅地处理错误。这一切都是我做的。问题是图像文件正在运行“问题是图像文件正在运行”是什么意思?我正在从数据库获取图像路径并将图像导入图像框。我想用相同的文件和名称修改图像,就像在图像文件上重新写入一样。这是必需的,因此会出现错误。不要在注释中发布代码。格式化后很难阅读,但你的就不是了。即使不是代码,也不应该有人阅读注释来理解问题。所有与问题相关的信息都应该在问题中,因此请编辑它以包含这些信息。
save image
   Dim pic As Image
            pic = PIC_PARTA.Image
            Dim Savefild As New SaveFileDialog
            Savefild.FileName = TEXT_NAMEIMG.Text & ".PNG"
            Savefild.ShowDialog()
            pic.Save(Savefild.FileName, System.Drawing.Imaging.ImageFormat.Png)
            LAB_path.Text = Savefild.FileName
            Savefild.Dispose()
            pic.Dispose()