VB.NET Code:
Public Class SaveResizedImage
' SaveResizedImage
Public Sub SaveResizedImage(ByVal objGraphic As System.Drawing.Image, ByVal strPath As String, ByVal intWidth As Integer)
Dim objFormat As System.Drawing.Imaging.ImageFormat = objGraphic.RawFormat
Dim objThumbSize As New System.Drawing.Size
objThumbSize = GetSize(objGraphic.Width, objGraphic.Height, intWidth)
Dim objBmp As System.Drawing.Bitmap = CreateThumbnail(objGraphic, objThumbSize.Width, objThumbSize.Height)
If objFormat Is System.Drawing.Imaging.ImageFormat.Gif Then
objBmp.Save(strPath, System.Drawing.Imaging.ImageFormat.Gif)
Else
objBmp.Save(strPath, System.Drawing.Imaging.ImageFormat.Jpeg)
End If
objBmp.Dispose()
End Sub ' SaveResizedImage
' GetSize
Private Function GetSize(ByVal dblWidth As Double, ByVal dblHeight As Double, ByVal intWidth As Integer) As System.Drawing.Size
Dim dblNewWidth As Double
Dim dblNewHeight As Double
dblNewWidth = intWidth
' Set new height, preserve original width/height ratio
dblNewHeight = dblHeight * dblNewWidth / dblWidth
Dim NewSize As New System.Drawing.Size(CInt(dblNewWidth), CInt(dblNewHeight))
Return NewSize
End Function ' GetSize
' CreateThumbnail
Private Function CreateThumbnail(ByVal objGraphic As System.Drawing.Image, ByVal lnWidth As Integer, ByVal lnHeight As Integer) As System.Drawing.Bitmap
Dim bmpOut As System.Drawing.Bitmap = Nothing
Try
Dim loBMP As New System.Drawing.Bitmap(objGraphic)
Dim loFormat As System.Drawing.Imaging.ImageFormat = loBMP.RawFormat
Dim lnRatio As Decimal
Dim lnNewWidth As Integer = 0
Dim lnNewHeight As Integer = 0
If loBMP.Width < lnWidth AndAlso loBMP.Height < lnHeight Then
Return loBMP
End If
If loBMP.Width > loBMP.Height Then
lnRatio = CType(lnWidth, Decimal) / loBMP.Width
lnNewWidth = lnWidth
Dim lnTemp As Decimal = loBMP.Height * lnRatio
lnNewHeight = CType(lnTemp, Integer)
Else
lnRatio = CType(lnHeight, Decimal) / loBMP.Height
lnNewHeight = lnHeight
Dim lnTemp As Decimal = loBMP.Width * lnRatio
lnNewWidth = CType(lnTemp, Integer)
End If
bmpOut = New System.Drawing.Bitmap(lnNewWidth, lnNewHeight)
Dim g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(bmpOut)
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
g.FillRectangle(System.Drawing.Brushes.White, 0, 0, lnNewWidth, lnNewHeight)
g.DrawImage(loBMP, 0, 0, lnNewWidth, lnNewHeight)
loBMP.Dispose()
Catch
Return Nothing
End Try
Return bmpOut
End Function ' CreateThumbnail
End Class