[ad_1]
Xin chào!
Chúc một ngày tốt lành cho tất cả mọi người,
Tôi có một dự án biểu mẫu cửa sổ VB.Net với MS SQL Server làm cơ sở dữ liệu phụ trợ. Tôi đang lưu trữ hình ảnh vào cơ sở dữ liệu từ ứng dụng. Điều này được khách hàng yêu cầu, ví dụ: khi người dùng đăng Phiếu thanh toán thì anh ta cần lưu trữ một số tài liệu thủ công làm bằng chứng hỗ trợ cho giao dịch. Mọi thứ sẽ ổn. Hình ảnh được lưu trữ và truy xuất một cách hoàn hảo. Nhưng do điều này nên kích thước của cơ sở dữ liệu đang tăng lên nhiều hơn dự kiến.
Bây giờ tôi muốn biết làm cách nào tôi có thể thực hiện tác vụ tương tự với việc chiếm dung lượng lưu trữ cơ sở dữ liệu ở mức tối thiểu nhất có thể.
Nếu có ai có thể giúp đỡ về vấn đề này, tôi sẽ rất biết ơn.
Cảm ơn và trân trọng.
Những gì tôi đã thử:
Đầu tiên tôi chèn ảnh vào điều khiển PictureBox bằng cách duyệt windows bằng OpenFileDialog.
Public Sub Select_Picture()
Try
OpenFile.ShowDialog()
Dim PicPath As String = OpenFile.FileName
MyPicBox.ImageLocation = PicPath
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Sau đó, để lưu trữ hình ảnh tôi sử dụng đoạn mã sau.
Public Sub SaveImage_() Dim SQL_Connection As New SqlConnection Try Dim MyImage As Image MyImage = MyPicBox.Image SQL_Connection.ConnectionString = MyConnectionString SQL_Connection.Open() Dim MyQuery As String = "insert into tbl_Setup_Companies Values(@Image_)" Dim MyCommand As SqlCommand MyCommand = New SqlCommand(MyQuery, SQL_Connection) MyCommand.Parameters.Add(New SqlParameter("@Image_", SqlDbType.Image)) MyCommand.Parameters("@Image_").Value = ConvertImage(MyImage) MyCommand.ExecuteNonQuery() SQL_Connection.Close() Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub
Để chuyển đổi Hình ảnh thành Byte, tôi đã viết một hàm sau có tên là “ConvertImate”
Public Function ConvertImage(ByVal myImage As Image) As Byte() Dim mstream As New MemoryStream myImage.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg) Dim myBytes(mstream.Length - 1) As Byte mstream.Position = 0 mstream.Read(myBytes, 0, mstream.Length) Return myBytes End Function
Giải pháp 1
Bạn có thể đặt cho hình ảnh một cái tên duy nhất, lưu nó vào máy chủ dưới dạng tệp và sau đó chỉ lưu trữ tham chiếu đến tệp trong cơ sở dữ liệu không?
[ad_2]
コメント