16,717
社区成员
发帖
与我相关
我的任务
分享
Public Sub Dram(ByVal p_img_Original As Image, ByVal p_int_Width As Integer, ByVal p_int_Height As Integer)
Dim l_int_OriWidth As Integer = p_img_Original.Width
Dim l_int_OriHeight As Integer = p_img_Original.Height
Dim l_int_IntWidth As Integer = 0
Dim l_int_IntHeight As Integer = 0
Dim l_int_OffsetX As Integer = 0
Dim l_int_OffsetY As Integer = 0
' 以寬度為基準,保持寬高比計算縮放之後的高度
l_int_IntWidth = p_int_Width
l_int_IntHeight = l_int_OriHeight * l_int_IntWidth / l_int_OriWidth
' 如果縮放之後的高度不夠新高度,則改用以高度為基準,保持寬高比計算縮放之後的寬度
If l_int_IntHeight < p_int_Height Then
l_int_IntHeight = p_int_Height
l_int_IntWidth = l_int_OriWidth * l_int_IntHeight / l_int_OriHeight
' 計算圖片偏移位置
Else
' 計算圖片偏移位置
l_int_OffsetY = (p_int_Height - l_int_IntHeight) / 4 ' 垂直居中偏上
End If
' 準備畫布
Dim l_bmp_New As Bitmap = New Bitmap(p_int_Width, p_int_Height)
Dim l_gph_New As Graphics = Graphics.FromImage(l_bmp_New)
l_gph_New.InterpolationMode = InterpolationMode.High
l_gph_New.SmoothingMode = SmoothingMode.HighQuality
l_gph_New.Clear(Color.Transparent)
' 生成圖片
l_gph_New.DrawImage(p_img_Original, New Rectangle(l_int_OffsetX, l_int_OffsetY, l_int_IntWidth, l_int_IntHeight))
'输出图片
'prepare output stream buffer
Dim l_ms_Buffer As MemoryStream = New MemoryStream()
l_bmp_New.Save(l_ms_Buffer, ImageFormat.Jpeg)
' output to browser
HttpContext.Current.Response.Clear()
HttpContext.Current.Response.ContentType = "image/jpeg"
HttpContext.Current.Response.BinaryWrite(l_ms_Buffer.ToArray())
End Sub