Bài viết [VB.NET] Hàm thay đổi kích thước ảnh

Thảo luận trong 'Visual Basic/VBA' bắt đầu bởi hongoctrien, 5 Tháng năm 2013.

  1. Offline

    hongoctrien

    • Friends

    Số bài viết:
    2.449
    Đã được thích:
    2.464
    Điểm thành tích:
    2.431
    Mã:
       Private Shared Function FixedSize(ByVal imgPhoto As Image, ByVal Width As Integer, ByVal Height As Integer) As Image
            Dim sourceWidth As Integer = imgPhoto.Width
            Dim sourceHeight As Integer = imgPhoto.Height
            Dim sourceX As Integer = 0
            Dim sourceY As Integer = 0
            Dim destX As Integer = 0
            Dim destY As Integer = 0
     
            Dim nPercent As Single = 0
            Dim nPercentW As Single = 0
            Dim nPercentH As Single = 0
     
            nPercentW = (CSng(Width) / CSng(sourceWidth))
            nPercentH = (CSng(Height) / CSng(sourceHeight))
     
            'if we have to pad the height pad both the top and the bottom
            'with the difference between the scaled height and the desired height
            If nPercentH < nPercentW Then
                nPercent = nPercentH
                destX = CInt(Math.Truncate((Width - (sourceWidth * nPercent)) / 2))
            Else
                nPercent = nPercentW
                destY = CInt(Math.Truncate((Height - (sourceHeight * nPercent)) / 2))
            End If
     
            Dim destWidth As Integer = CInt(Math.Truncate(sourceWidth * nPercent))
            Dim destHeight As Integer = CInt(Math.Truncate(sourceHeight * nPercent))
     
            Dim bmPhoto As New Bitmap(Width, Height, PixelFormat.Format24bppRgb)
            bmPhoto.SetResolution(imgPhoto.HorizontalResolution, imgPhoto.VerticalResolution)
     
            Dim grPhoto As Graphics = Graphics.FromImage(bmPhoto)
            grPhoto.Clear(Color.Linen)
            grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic
     
            grPhoto.DrawImage(imgPhoto, New Rectangle(destX, destY, destWidth, destHeight), New Rectangle(sourceX, sourceY, sourceWidth, sourceHeight), GraphicsUnit.Pixel)
     
            grPhoto.Dispose()
            Return bmPhoto
        End Function
    
    Gọi hàm:
    Mã:
    Dim resized = FixedSize(imgPath, 200, 200)
    resized.Save(NewCopy, ImageFormat.Jpeg)
    resized.Dispose()

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí