Mysql 如何在保存到数据库之前重新调整图像大小?

Mysql 如何在保存到数据库之前重新调整图像大小?,mysql,vb.net,resize,blob,Mysql,Vb.net,Resize,Blob,在使用vb.net保存为blob数据类型之前,我遇到了一个关于重新调整图像大小的问题。我不知道如何调整图像的大小 以下是我在insert中的代码: Dim FileSize As UInt32 Dim mstream As New System.IO.MemoryStream() pic_box_save.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg) Dim arrImage()

在使用vb.net保存为blob数据类型之前,我遇到了一个关于重新调整图像大小的问题。我不知道如何调整图像的大小

以下是我在insert中的代码:

        Dim FileSize As UInt32

    Dim mstream As New System.IO.MemoryStream()
    pic_box_save.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg)
    Dim arrImage() As Byte = mstream.GetBuffer()
    FileSize = mstream.Length
    mstream.Close()
    MsgBox(FileSize)


    Try
        sql = "INSERT INTO clientreports(report_id, img) VALUES(@image_id, @image_data)"
        sql_command = New MySqlCommand(SQL, sql_connection)
        sql_command.Parameters.AddWithValue("@image_id", Nothing)
        sql_command.Parameters.AddWithValue("@image_data", arrImage)


        sql_command.ExecuteNonQuery()
    Catch ex As Exception
        MsgBox(ex.Message)
        Exit Sub
    End Try

    MsgBox("Image has been saved.")

如果有人知道如何解决这个问题,请帮助我。谢谢大家!

要创建缩略图/调整图像大小:

Friend Function GetImageThumb(ByVal orgBmp As BitMap, 
                    ByVal w as Int32, h as Int32) As Bitmap

    Dim thumb As New Bitmap(w, h)

    Using g As Graphics = Graphics.FromImage(thumb)
        g.DrawImage(orgBmp , 0, 0, w + 1, h + 1)
    End Using
    Return thumb
End Function

对于数据存储,您可能需要将图像转换为其他格式,如Base64字符串或字节数组。

您可以使用以下代码根据特定要求调整图像大小。如果需要,甚至可以保持纵横比

Public Shared Function ResizeImage(ByVal pImage As Drawing.Image, ByVal pWidth As Integer, ByVal pHeight As Integer, Optional ByVal pPreserveAspectRatio As Boolean = True, Optional ByVal pIsImageDisposeRequired As Boolean = True) As Drawing.Image
                Dim iNewWidth As Integer
                Dim iNewHeight As Integer
                Dim oNewImage As System.Drawing.Image
                Dim originalWidth As Integer
                Dim originalHeight As Integer
                Dim oPercentWidth As Single
                Dim oPercentHeight As Single
                Dim oPercent As Single

                Try
                    If pPreserveAspectRatio Then
                        originalWidth = pImage.Width
                        originalHeight = pImage.Height
                        oPercentWidth = CSng(pWidth) / CSng(originalWidth)
                        oPercentHeight = CSng(pHeight) / CSng(originalHeight)
                        oPercent = If(oPercentHeight < oPercentWidth, oPercentHeight, oPercentWidth)
                        iNewWidth = CInt(originalWidth * oPercent)
                        iNewHeight = CInt(originalHeight * oPercent)
                    Else
                        iNewWidth = pWidth
                        iNewHeight = pHeight
                    End If

                    oNewImage = New System.Drawing.Bitmap(iNewWidth, iNewHeight)
                    Using oGraphicsHandle As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(oNewImage)
                        oGraphicsHandle.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
                        oGraphicsHandle.DrawImage(pImage, 0, 0, iNewWidth, iNewHeight)
                    End Using

                    If pIsImageDisposeRequired Then
                        pImage.Dispose()
                    End If

                    Return oNewImage
                Catch ex As Exception
                    eCP.Excpetion.Untility.CommonUtils.WriteExceptionToFile(ex.Message, eCP.Excpetion.Untility.CommonUtils.LogFileTypes.Host)
                    Return pImage
                End Try
            End Function
如果有任何困惑,请随时询问