如何在 vb.net 中保存对原始图像的更改?
Posted
技术标签:
【中文标题】如何在 vb.net 中保存对原始图像的更改?【英文标题】:How to save changes to my orginal image in vb.net? 【发布时间】:2017-06-27 02:02:53 【问题描述】:我正在使用此代码保存图像
PictureBox1.Image.Save(filePath)
之后我裁剪图像,我想通过用新裁剪的替换旧的来再次保存它
请帮忙
问候,,,
【问题讨论】:
如何加载图片? 如果您使用Image.FromFile()
,您应该阅读以下内容:***.com/questions/18250848/…
【参考方案1】:
当您将图像加载到 PictureBox 而不是您当前使用的图像时,请使用以下代码,稍后保存就可以了。 using 语句确保在加载图像后释放文件。 将 filePath 替换为您自己的。
Using stream as new FileStream(filePath, FileMode.Open, FileAccess.Read)
PictureBox1.Image = Image.FromStream(stream)
End Using
编辑
从您的上一条评论中我可以看到此代码
Try
Me.Opacity = 0%
Me.PictureBox1.Image = cc()
PictureBox1.Image.Save(filePath)
source = Image.FromFile(filePath)
PictureBox1.Image = source
TextBox1.Text = filePath
Me.Opacity = 100%
Catch ex As Exception
MsgBox(ex.Message)
End Try
保存后无需将图像重新加载到 PictureBox。只需去掉以下几行。
source = Image.FromFile(filePath)
PictureBox1.Image = source
至少现在应该可以解决您的问题,因为您不会将图像保存到您从中加载它的同一图像中(您实际上并没有加载它)。但是你以后必须为你的整个算法找到一个更好的解决方案:)
【讨论】:
我试过这样做,但我遇到了这个错误“进程无法访问文件 'C:\Users\TOSHIBA\Desktop\image20170627083237.png' 因为它正被另一个进程使用." 好的,这是我正在使用的代码,我应该把你的代码放在哪里 Try Me.Opacity = 0% Me.PictureBox1.Image = cc() PictureBox1.Image.Save(filePath) source = Image.FromFile(filePath) PictureBox1.Image = source TextBox1.Text = filePath Me.Opacity = 100% Catch ex As Exception MsgBox(ex.Message) End Try 你的 cc() 函数是做什么的? 私有函数 cc() As Bitmap Dim s As Screen = Screen.PrimaryScreen Dim img As New Bitmap(s.Bounds.Width, s.Bounds.Height) Dim gr As Graphics = Graphics.FromImage( img) gr.CopyFromScreen(s.Bounds.Location, Point.Empty, s.Bounds.Size) 返回 img 结束函数 helooooooooooooooo【参考方案2】:这就是答案
Dim bmp1 As New Bitmap(PictureBox1.Image)
If System.IO.File.Exists(filePath) Then
System.IO.File.Delete(filePath)
End If
bmp1.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg)
' Dispose of the image files.
bmp1.Dispose()
【讨论】:
以上是关于如何在 vb.net 中保存对原始图像的更改?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 VB.NET 将 Excel 工作簿保存到一般路径中
如何将图像从一个图片框传输到另一个图片框? VB.NET 和 SQL