生成缩略图
Public Function GenerateThumbnail(ByVal original As Image, ByVal DescSize As Integer) As Image
Dim tn As Bitmap
Dim DescHeight, DescWidth As Integer
'对图像的高和宽都要判断
If original.Height >= DescSize Or original.Width >= DescSize Then
DescHeight = original.Height
DescWidth = original.Width
If DescHeight >= DescSize Then
DescHeight = DescSize
DescWidth = DescHeight * original.Width \ original.Height
End If
If DescWidth >= DescSize Then
DescWidth = DescSize
DescHeight = DescWidth * original.Height \ original.Width
End If
End If
tn = New Bitmap(CInt(DescSize), CInt(DescSize))
Dim g As Graphics = Graphics.FromImage(tn)
Dim whiteBrush As New SolidBrush(Color.White)
Dim Rectangle As Rectangle = New Rectangle((DescSize - DescWidth) / 2, (DescSize - DescHeight) / 2, DescWidth, DescHeight)
Dim RectangleS As Rectangle = New Rectangle(0, 0, DescSize, (DescSize - DescHeight) / 2)
Dim RectangleX As Rectangle = New Rectangle(0, (DescSize + DescHeight) / 2, DescSize, (DescSize - DescHeight) / 2)
Dim RectangleZ As Rectangle = New Rectangle(0, 0, (DescSize - DescWidth) / 2, DescSize)
Dim RectangleY As Rectangle = New Rectangle((DescSize + DescWidth) / 2, 0, (DescSize - DescWidth) / 2, DescSize)
g.FillRectangle(whiteBrush, RectangleS)
g.FillRectangle(whiteBrush, RectangleX)
g.FillRectangle(whiteBrush, RectangleZ)
g.FillRectangle(whiteBrush, RectangleY)
If DescWidth = DescSize Or DescHeight = DescSize Then
If DescWidth = DescSize Then
g.DrawImage(original, Rectangle, 0, 0, original.Width, original.Height, GraphicsUnit.Pixel)
End If
If DescHeight = DescSize Then
g.DrawImage(original, Rectangle, 0, 0, original.Width, original.Height, GraphicsUnit.Pixel)
End If
Else
g.DrawImage(original, New Rectangle((DescSize - original.Width) / 2, (DescSize - original.Height) / 2, _
original.Width, original.Height), 0, 0, original.Width, original.Height, GraphicsUnit.Pixel)
End If
g.Dispose()
Return CType(tn, Image)
End Function 'GenerateThumbnail