Изменение размера изображения в asp.net VB.net - PullRequest
0 голосов
/ 08 июня 2018

В приложении, над которым я работаю, мне нужно изменить размер изображения и добавить его в базу данных. Я реализовал что-то для этого, но у меня проблема с сохранением результирующего файла BMP в потоке памяти, чтобы моя реализация работала сСуществующий код. Также источником моего изображения является переменная fu (File upload object). Мне также было интересно, можно ли использовать для доступа к источнику файла fu.name или fu.Filecontents.Также я приложил то, что я реализовал в начале моей реализации и в конце моей реализации, поскольку другой код был выполнен коллегой, которого больше нет со мной.

Вот код:

        Public Function UploadFile(fu As FileUpload, expID As Integer) As Integer
    GetConnectionString()
    Dim con As New SqlConnection(connString.ConnectionString)
    Dim dataAdapter As New SqlDataAdapter
    Dim myCommandBuilder As SqlCommandBuilder
    Dim dataSet As New DataSet
    Dim memoryStream As MemoryStream
    Dim bData As Byte()
    Dim reader As BinaryReader
    Dim expense As New Expense(expID)
    Dim loggedInUser As New Employee(Membership.GetUser.UserName)

    Try
        UploadFile = 1
        'check that the logged in user has the right to attach a file to the current expense
        If loggedInUser.ID = expense.Rpt.Emp.ID Or loggedInUser.ID = expense.Rpt.Emp.Supervisor Or loggedInUser.ID = expense.Rpt.Emp.Finalizer Or loggedInUser.ID = expense.Rpt.Emp.DelegatedTo Then
            If fu.HasFile Then
                If fu.FileContent.Length < 5000000 Then
                    dataAdapter = New SqlDataAdapter("SELECT * FROM tblExpense WHERE EXPENSE_ID=" & expID, con)
                    myCommandBuilder = New SqlCommandBuilder(dataAdapter)
                    dataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
                    con.Open()
                    dataAdapter.Fill(dataSet, "tblExpense")
                    'Begining of my implementation
                    ' Get the scale factor.
                    Dim scale_factor As Single = Single.Parse(0.33)
                    ' Get the source bitmap.
                    Dim bm_source As New Bitmap(fu.FileContent)
                    ' Make a bitmap for the result.
                    Dim bm_dest As New Bitmap(
                    CInt(bm_source.Width * scale_factor),
                    CInt(bm_source.Height * scale_factor))
                    ' Make a Graphics object for the result Bitmap.
                    Dim gr_dest As Graphics = Graphics.FromImage(bm_dest)
                    ' Copy the source image into the destination bitmap.
                    gr_dest.DrawImage(bm_source, 0, 0,
                    bm_dest.Width + 1,
                    bm_dest.Height + 1)

                    'Ending of my implementation
                    reader = New BinaryReader(fu.FileContent)
                    bData = reader.ReadBytes(reader.BaseStream.Length)
                    memoryStream = New MemoryStream(bData, 0, bData.Length)
                    memoryStream.Close()

                    dataSet.Tables("tblExpense").Rows(0)("RECEIPT") = bData

                    Select Case UCase(Right(fu.PostedFile.FileName, 3))
                        Case "JPG" : dataSet.Tables("tblExpense").Rows(0)("RECEIPT_TYPE") = "image/jpeg"
                        Case "PNG" : dataSet.Tables("tblExpense").Rows(0)("RECEIPT_TYPE") = "image/png"
                        Case "GIF" : dataSet.Tables("tblExpense").Rows(0)("RECEIPT_TYPE") = "image/gif"
                        Case "PDF" : dataSet.Tables("tblExpense").Rows(0)("RECEIPT_TYPE") = "application/pdf"
                        Case "TXT" : dataSet.Tables("tblExpense").Rows(0)("RECEIPT_TYPE") = "text/plain"
                        Case "HTM" : dataSet.Tables("tblExpense").Rows(0)("RECEIPT_TYPE") = "text/html"
                        Case "HTML" : dataSet.Tables("tblExpense").Rows(0)("RECEIPT_TYPE") = "text/html"
                        Case Else : dataSet.Tables("tblExpense").Rows(0)("RECEIPT_TYPE") = "image/jpeg"
                    End Select
                    dataSet.Tables("tblExpense").Rows(0)("RECEIPT_NAME") = expense.Rpt.Emp.EmpNum & "-" & expense.Rpt.Name & "-" & expense.ID
                    dataSet.Tables("tblExpense").Rows(0)("RECEIPT_DATE") = Now
                    dataAdapter.Update(dataSet, "tblExpense")

                Else
                    UploadFile = 2
...