Image Cropping with resizing using vb.netのチュートリアルに従っています。すべてうまく動作しますが、代わりにハードディスクに を保存してください。私は自分のデータベース(SQLServer)に保存したい。画像をトリミングしてvb.netを使用してデータベースに保存します
これは、私はそれがちょうどこの
Using cmd As New SqlClient.SqlCommand("dbo.uspAdd", cn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@firstname", SqlDbType.VarChar, 100).Value = txtName.Text
cmd.Parameters.Add("@lastName", SqlDbType.VarChar, 100).Value = txtSurname.Text
'add insert picture code here
cmd.ExecuteNonQuery()
MsgBox("Save Record New record Successfully")
End Using
のように一緒に私の二つのデータをSQL Server 2008の(画像データ型)に画像を保存するディスク上の
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cropSaveBtn.Click
Dim tempFileName As String
Dim svdlg As New SaveFileDialog()
svdlg.Filter = "JPEG files (*.jpg)|*.jpg|All files (*.*)|*.*"
svdlg.FilterIndex = 1
svdlg.RestoreDirectory = True
If svdlg.ShowDialog() = Windows.Forms.DialogResult.OK Then
tempFileName = svdlg.FileName 'check the file exist else save the cropped image
Try
Dim img As Image = PreviewPictureBox.Image
SavePhoto(img, tempFileName, 225)
Catch exc As Exception
MsgBox("Error on Saving: " & exc.Message)
End Try
End If
End Sub
Public Function SavePhoto(ByVal src As Image, ByVal dest As String, ByVal w As Integer) As Boolean
Try
Dim imgTmp As System.Drawing.Image
Dim imgFoto As System.Drawing.Bitmap
imgTmp = src
imgFoto = New System.Drawing.Bitmap(w, 225)
Dim recDest As New Rectangle(0, 0, w, imgFoto.Height)
Dim gphCrop As Graphics = Graphics.FromImage(imgFoto)
gphCrop.SmoothingMode = SmoothingMode.HighQuality
gphCrop.CompositingQuality = CompositingQuality.HighQuality
gphCrop.InterpolationMode = InterpolationMode.High
gphCrop.DrawImage(imgTmp, recDest, 0, 0, imgTmp.Width, imgTmp.Height, GraphicsUnit.Pixel)
Dim myEncoder As System.Drawing.Imaging.Encoder
Dim myEncoderParameter As System.Drawing.Imaging.EncoderParameter
Dim myEncoderParameters As System.Drawing.Imaging.EncoderParameters
Dim arrayICI() As System.Drawing.Imaging.ImageCodecInfo = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()
Dim jpegICI As System.Drawing.Imaging.ImageCodecInfo = Nothing
Dim x As Integer = 0
For x = 0 To arrayICI.Length - 1
If (arrayICI(x).FormatDescription.Equals("JPEG")) Then
jpegICI = arrayICI(x)
Exit For
End If
Next
myEncoder = System.Drawing.Imaging.Encoder.Quality
myEncoderParameters = New System.Drawing.Imaging.EncoderParameters(1)
myEncoderParameter = New System.Drawing.Imaging.EncoderParameter(myEncoder, 60L)
myEncoderParameters.Param(0) = myEncoderParameter
imgFoto.Save(dest, jpegICI, myEncoderParameters)
imgFoto.Dispose()
imgTmp.Dispose()
Catch ex As Exception
End Try
End Function
を保存するコードです
そして、私はこの問題を解決する方法を見つけるためにほぼ8時間立ち往生しています。どんな助けも非常に高く評価されるでしょう。
おそらくこれが役に立ちます。 http://stackoverflow.com/questions/16842065/how-to-save-and-retrive-picturebox-image-to-sql-server-database-varbinarymax-cまたはbase64に変換して戻ることができますか? – Lectere
@Lectere私のコードに沿ってそれを使用するのを手伝ってもらえますか? –
まず、画像データを保存するのではなく**画像ファイルへのパスを考えてみましょう。[画像データ型は古くから廃止されました](https://msdn.microsoft.com/en-us/library/ms187993)。 aspx)ので、代わりにバイト配列を使用してVarBinaryを使用する必要があります。 B64文字列として保存しないでください。必要以上に大きくなります。また、空のキャッチブロックを使用することは非常に悪い考えです。 – Plutonix