如何使用 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

如何在 vb.net、SQL Server 中为多个搜索制作代码

如何在 SQL Server 表中创建图像列并使用 VB 在 ASP.NET 中检索它