您的位置:首页 > 编程语言 > ASP

asp.net生成高质量缩略图函数(vb代码)

2006-04-27 10:41 645 查看
在网上找的都是用C#写的.参考了一下.自己转换成VB.NET.

' <param name="originalImagePath">源图路径(物理路径)</param>
' <param name="thumbnailPath">缩略图路径(物理路径)</param>
' <param name="width">缩略图宽度</param>
' <param name="height">缩略图高度</param>
' <param name="mode">生成缩略图的方式</param>
Public Shared Sub MakeThumbnail()Sub MakeThumbnail(ByVal originalImagePath As String, ByVal thumbnailPath As String, ByVal width As Integer, ByVal height As Integer, ByVal mode As String)
Dim originalImage As System.Drawing.Image
originalImage = System.Drawing.Image.FromFile(originalImagePath)

Dim towidth As Integer = width
Dim toheight As Integer = height

Dim x As Integer = 0
Dim y As Integer = 0
Dim ow As Integer = originalImage.Width
Dim oh As Integer = originalImage.Height

Select Case mode
Case "HW" '指定高宽缩放(可能变形)
Case "W" '指定宽,高按比例
toheight = originalImage.Height * width / originalImage.Width
Case "H" '指定高,宽按比例
towidth = originalImage.Width * height / originalImage.Height
Case "Cut" '指定高宽裁减(不变形)
If CDbl(originalImage.Width) / CDbl(originalImage.Height) > CDbl(towidth) / CDbl(toheight) Then
oh = originalImage.Height
ow = originalImage.Height * towidth / toheight
y = 0
x = (originalImage.Width - ow) / 2
Else
ow = originalImage.Width
oh = originalImage.Width * height / towidth
x = 0
y = (originalImage.Height - oh) / 2
End If
Case Else
End Select

'新建一个bmp图片
Dim bitmap = New System.Drawing.Bitmap(towidth, toheight)

'新建一个画板
Dim g As Graphics = System.Drawing.Graphics.FromImage(bitmap)

'设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High

'设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality

'清空画布并以透明背景色填充
g.Clear(Color.Transparent)

'在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage, New Rectangle(0, 0, towidth, toheight), New Rectangle(x, y, ow, oh), GraphicsUnit.Pixel)

Try
'以jpg格式保存缩略图
bitmap.Save(thumbnailPath)
Catch ex As Exception
Throw ex
Finally
originalImage.Dispose()
bitmap.Dispose()
g.Dispose()
End Try
End Sub

使用原来的上传后直接生成缩略图效果太差了..
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: