Thay đổi kích cỡ ảnh khi upload web ASP code VB.NET - Resize Image ASP VB.NET
Tue May 28, 2013 10:25 pm
Đoạn codeVB.NET sau đây sẽ giúp bạn thu nhỏ một tấm hình nào đó từ kích thước lớn thành kích thước nhỏ, có thể chúng ta thường ứng dụng trong các trường hợp tạo Thumbnails - Hình đại diện cho bài viết, tạo Avatar cho người dùng.Xem đoạn code VB.NET sau:
Đầu tiên bạn cần add thêm 3 thư viện sau:
Bạn viết thêm 2 hàm sau:
Đến khi cần sử dụng hàm thì bạn gọi như sau là sẽ đồng thời thay đổi kích thước ảnh theo quy định của mình và upload ảnh đã resize lên host
Với filehinh là FileUpload.
Chúc các bạn thành công.!
Đầu tiên bạn cần add thêm 3 thư viện sau:
- Code:
Imports System.Drawing
Imports System.IO
Imports System.Drawing.Imaging
Bạn viết thêm 2 hàm sau:
- Code:
Public Sub ThayDoiKichThuocAnh(ByVal ImageSavePath As String, ByVal fileName As String, ByVal MaxWidthSideSize As Integer, ByVal Buffer As Stream)
Dim intNewWidth As Integer
Dim intNewHeight As Integer
Dim imgInput As System.Drawing.Image = System.Drawing.Image.FromStream(Buffer)
Dim myImageCodecInfo As ImageCodecInfo
myImageCodecInfo = GetEncoderInfo("image/jpeg")
'
Dim myEncoder As System.Drawing.Imaging.Encoder = System.Drawing.Imaging.Encoder.Quality
Dim myEncoderParameters As New EncoderParameters(1)
Dim myEncoderParameter As EncoderParameter
'Giá trị width và height nguyên thủy của ảnh;
Dim intOldWidth As Integer = imgInput.Width
Dim intOldHeight As Integer = imgInput.Height
'Kiểm tra xem ảnh ngang hay dọc;
Dim intMaxSide As Integer
'if (intOldWidth >= intOldHeight)
' {
' intMaxSide = intOldWidth;
' }
' else
' {
' intMaxSide = intOldHeight;
' }
'Để xác định xử lý ảnh theo width hay height thì bạn bỏ note phần trên;
'Ở đây mình chỉ sử dụng theo width nên gán luôn intMaxSide= intOldWidth; ^^;
intMaxSide = intOldWidth
If intMaxSide > MaxWidthSideSize Then
'Gán width và height mới.
Dim dblCoef As Double = MaxWidthSideSize / CDbl(intMaxSide)
intNewWidth = Convert.ToInt32(dblCoef * intOldWidth)
intNewHeight = Convert.ToInt32(dblCoef * intOldHeight)
Else
'Nếu kích thước width/height (intMaxSide) cũ ảnh nhỏ hơn MaxWidthSideSize thì giữ nguyên //kích thước cũ;
intNewWidth = intOldWidth
intNewHeight = intOldHeight
End If
'Tạo một ảnh bitmap mới;
Dim bmpResized As New Bitmap(imgInput, intNewWidth, intNewHeight)
'Phần EncoderParameter cho phép bạn chỉnh chất lượng hình ảnh ở đây mình để chất lượng tốt //nhất là 100L;
myEncoderParameter = New EncoderParameter(myEncoder, 100L)
myEncoderParameters.Param(0) = myEncoderParameter
'Lưu ảnh;
bmpResized.Save(ImageSavePath & fileName, myImageCodecInfo, myEncoderParameters)
'Giải phóng tài nguyên;
'Buffer.Close();
imgInput.Dispose()
bmpResized.Dispose()
End Sub
Private Function GetEncoderInfo(ByVal mimeType As [String]) As ImageCodecInfo
Dim j As Integer
Dim encoders As ImageCodecInfo()
encoders = ImageCodecInfo.GetImageEncoders()
For j = 0 To encoders.Length - 1
If encoders(j).MimeType = mimeType Then
Return encoders(j)
End If
Next
Return Nothing
End Function
Đến khi cần sử dụng hàm thì bạn gọi như sau là sẽ đồng thời thay đổi kích thước ảnh theo quy định của mình và upload ảnh đã resize lên host
- Code:
ThayDoiKichThuocAnh(Server.MapPath("~/upload/"), filehinh.FileName, 450, filehinh.PostedFile.InputStream)
Với filehinh là FileUpload.
Chúc các bạn thành công.!
Permissions in this forum:
Bạn không có quyền trả lời bài viết