2016-04-24 33 views
-1

我正在使用vb.net和sql server 2008和一个picturebox上传照片。 这就是我想要做的。如何使用vb.net和SQL Server来裁剪和调整图像大小

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 

有人可以帮我解决我的代码。任何帮助将非常感激。由于

+0

什么是不工作...你能具体点吗?为什么你有'Dim a As OpenFileDialog'两次?如果您要裁剪图片框中的图片,请在将图片添加到数据库而不是原始图片文件时使用该图片。 –

+0

@chase Rocker对不起,因为新的OpenFileDialog只声明一次。我修正了上面的代码。我读过[参考](http://stackoverflow.com/questions/8725489/how-to-crop-an-image-in-vb-net),但我不能将其应用于我的代码。你能帮我解决我的问题吗? –

+0

您不明白特定的代码行或者您不明白其中的任何代码?如果你不明白这一点,你可能需要阅读.net图形功能......试图解释它在这里是一个主题过于宽泛。 –

回答

0

可以裁剪图像并指定路径和裁剪后的图像与下面的代码示例的名字,反正乌尔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 
+0

嗨,我这样做[代码](http://pastebin.com/h4jYmdnA),但它会引发错误'在GDI +中发生的一般性错误''CropImage.Save(“C:\ Users \ agent_edx44 \图片“)' –

+0

GDI +错误说你”你没有验证将这个文件保存到这个目录“。你必须输入文件名,比如“C:\ Users \ agent_edx44 \ Pictures \ asdf.jpg” – snoopcommands

+0

当我输入文件名时,错误仍然是一样的。这里是我的[截图](http://img0.uploadhouse.com/fileuploads/22369/22369880cc6b83f87f8381f54eef8c26c6f44f63.jpg) –