2016-04-24 1 views
-1

Я использую vb.net и sql server 2008 и ящик для загрузки фотографий. Это то, что я хочу сделать.Как обрезать и изменять размер изображения с помощью vb.net и SQL Server

1. Изображение может быть любым. Это может быть bitmap, jpg, png, anything 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 New OpenFileDialog» дважды? Если вы собираетесь обрезать изображение в окне изображения, используйте это изображение, когда вы добавляете его в свою БД вместо исходного файла изображения. –

+0

@chase Rocker sorry 'dim a as New OpenFileDialog' объявляется только один раз. i Исправьте код выше. Я прочитал этот [Ссылка] (http://stackoverflow.com/questions/8725489/how-to-crop-an-image-in-vb-net), но я не могу применить его с моим кодом. Можете ли вы помочь мне с моей проблемой? –

+0

Вы не понимаете конкретную строку кода или не понимаете ее? Если вы этого не понимаете, вы, вероятно, захотите ознакомиться с функциональностью графической подсистемы .net, пытаясь объяснить, что здесь слишком много темы. –

ответ

0

вы можете обрезать изображение и обозначить путь и имя обрезанного изображения с помощью следующего образца кода, в любом случае ур SQL fucntion нужен путь к файлу изображения

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

Привет, я сделал это таким образом [Code] (http://pastebin.com/h4jYmdnA), но он выдает мне ошибку «Общая ошибка, произошедшая в GDI +» в этой строке 'CropImage.Save (« C: \ Users \ agent_edx44 » \ Pictures ")' –

+0

Ошибка GDI + говорит вам: «У вас нет права на сохранение этого файла в этом каталоге». Вы также должны ввести имя файла так: «C: \ Users \ agent_edx44 \ Pictures \ asdf.jpg» – snoopcommands

+0

Ошибка при сохранении имени файла. Вот мой [скриншот] (http://img0.uploadhouse.com/fileuploads/22369/22369880cc6b83f87f8381f54eef8c26c6f44f63.jpg) –