如何使用 vb.net 和 SQL Server 裁剪和调整图像大小
Posted
技术标签:
【中文标题】如何使用 vb.net 和 SQL Server 裁剪和调整图像大小【英文标题】:How to crop and resize image using vb.net and SQL Server 【发布时间】:2016-04-24 07:00:49 【问题描述】:我正在使用 vb.net 和 sql server 2008 以及用于上传照片的图片框。 这就是我想做的。
1.图像可以是任何东西。它可以是位图,jpg,png,任何东西 2.从我的电脑上传图片 3. 裁剪图像并调整其大小以适合我的图片框。 4. 保存到SQL Server数据库
这是我在数据库中上传和保存图像的工作代码。
Public Class Form1
Dim a As New OpenFileDialog
Private Sub PictureBox1_DoubleClick(sender As Object, e As EventArgs) Handles PictureBox1.DoubleClick
Dim picl as string
a.filter = nothing
picl = a.filename
a.showdialog()
picturebox1.image = image.fromfile(a.filename)
End Sub
Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
cn.Open()
Using cmd As New SqlClient.SqlCommand("dbo.uspAdd", cn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(New SqlClient.SqlParameter("@customerPic", SqlDbType.Image)).Value = IO.File.ReadAllBytes(a.FileName)
cmd.ExecuteNonQuery()
MsgBox("Save Record New record Successfully")
End Using
cn.close
End Sub
我在这里阅读了一些参考资料,但它对我不起作用,现在我被困了将近一个小时。 这是我尝试过的。
Imports System.Drawing.Drawing2D
Public Class Form1
Dim a As New OpenFileDialog
Private Sub PictureBox1_DoubleClick(sender As Object, e As EventArgs) Handles PictureBox1.DoubleClick
Dim picl As String
a.Filter = Nothing
picl = a.FileName
a.ShowDialog()
PictureBox1.Image = Image.FromFile(a.FileName)
Dim OriginalImage = Image.FromFile(a.FileName)
Dim CropRect As New Rectangle(100, 0, 100, 100)
Dim CropImage = New Bitmap(CropRect.Width, CropRect.Height)
Using grp = Graphics.FromImage(CropImage)
grp.DrawImage(OriginalImage, New Rectangle(0, 0, CropRect.Width, CropRect.Height), CropRect, GraphicsUnit.Pixel)
OriginalImage.Dispose()
End Using
End Sub
有人可以帮我修复我的代码吗?任何帮助将不胜感激。谢谢
【问题讨论】:
什么不工作...你能具体点吗?为什么你有两次Dim a As New OpenFileDialog
?如果您要裁剪图片框中的图像,请在将其添加到数据库时使用该图像而不是原始图像文件。
@chase Rocker 抱歉,dim a as New OpenFileDialog
只声明了一次。我修复了上面的代码。我读了这个Reference,但我不能用我的代码应用它。你能帮我解决我的问题吗?
您不了解特定的代码行,或者您不了解任何代码?如果您对其中的任何内容都不了解,您可能需要阅读 .net 图形功能……在这里试图解释它的主题过于宽泛。
感谢您的建议。无论如何,你能给我一些关于如何处理这个问题的示例代码吗?
【参考方案1】:
您可以使用以下代码示例裁剪图像并指定裁剪图像的路径和名称,无论如何你的sql函数需要图像文件路径
Dim LocX = 100 'x cord. of where crop starts
Dim LocY = 0 'y cord. of where crop starts
Dim CropW = 100 'Crop width
Dim CropH = 100 'Crop height
Dim CropRect As New Rectangle(LocX, LocY, CropW, CropH)
Dim OriginalImage = PictureBox1.Image
Dim CropImage = New Bitmap(CropRect.Width, CropRect.Height)
Using grp = Graphics.FromImage(CropImage)
grp.DrawImage(OriginalImage, New Rectangle(0, 0, CropRect.Width, CropRect.Height), CropRect, GraphicsUnit.Pixel)
CropImage.Save("cropped file path and name here")
End Using
【讨论】:
嗨,我是这样做的 Code 但它在这行CropImage.Save("C:\Users\agent_edx44\Pictures")
中抛出了错误 A generic error occurred in GDI+
GDI+ 错误提示您“您没有身份验证。无法将此文件保存到此目录中”。您也必须输入文件名,例如“C:\Users\agent_edx44\Pictures\asdf.jpg”
当我输入文件名时错误仍然相同。这是我的screenshot以上是关于如何使用 vb.net 和 SQL Server 裁剪和调整图像大小的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 VB.NET 配置 DataAdapter 以使用 Sql Server 存储过程执行 Select、Update、Insert 和 Delete 命令?
VB.NET 2010 和 SQL Server 2008 与 ADO.NET 问题
如何检查 vb .net 项目的 sql server 中是不是存在数据库和表?
使用 C#/VB.NET 实现 SQL Server Profiler