Ridimensionare un'immagine in VB.NET

ATTENZIONE! Il post ha più di 2 anni e le informazioni contenute potrebbero essere obsolete (ad esempio a causa di un aggiornamento di versione rispetto agli elementi descritti o links modificati da siti esterni).

Una semplice funzione per eseguire il resize di un’immagine in VB.NET:

Public Function ResizeImage(ByVal percorsoImmagine As String) As Boolean
    Dim bm As Bitmap
    'dimensioni  originali
    Dim originalX as Integer
    Dim originalY as Integer
    'dimensioni finali
    Dim destinationX as Integer
    Dim destinationY as Integer
    'cartella e nome di destinazione
    Dim destinationFolder as String
    Dim destinationFileName As String
    'carica immagine originale
    bm = New Bitmap(percorsoImmagine)
    'ricava dimensioni originali dell'immagine
    originalX = bm.Width
    originalY = bm.Height
    'imposta dimensioni finali
    destinationX = 600
    destinationY = 500
    'riduzione dell'immagine
    Dim thumb As New Bitmap(destinationX, destinationY)
    Dim g As Graphics = Graphics.FromImage(thumb)
    'impostazione del metodo di interpolazione utilizzato per il resize
    g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
    g.DrawImage(bm, New Rectangle(0, 0, destinationX, destinationY), New Rectangle(0, 0, bm.Width, bm.Height), GraphicsUnit.Pixel)
    g.Dispose()
    'salvataggio dell'immagine ridimensionata
    destinationFolder = "C:\"
    destinationFileName = "resized_" & System.IO.Path.GetFileNameWithoutExtension(percorsoImmagine)
    thumb.Save(destinationFolder & destinationFileName & ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
    bm.Dispose()
    thumb.Dispose()
    Return True
End Function

Nella funzione le dimensioni finali sono entrambe fisse, ma è possibile eseguire un resize proporzionale ad una delle due dimensioni. Per un resize con altezza fissa (Y) si deve sostituire

destinationX = 600
destinationY = 500
con
destinationY = 500
destinationX = CInt((destinationY / originalY) * originalX)

Per un resize con larghezza fissa (X) utilizzare:

destinationX = 600
destinationY = CInt((destinationX / originalX) * originalY)

 

 
 

Commenti