Ovviamente dipende anche in che formato salvi (se salvi) l'immagine ridimensionata. Un'immagine da 1024x768 di qualsiasi formato sia e ridimensionata e salvata in .jpg perdi sia in definizione (sia che allarghi che rimpicciolisci) sia in qualità dovuta all'ulteriore compressione che subisce l'immagine durante la memorizzazione su file. Ma dipende dal formato che usi, in generale da .JPG a .JPG, mantenendo la stessa compressione perdi 2 volte in qualità.
La qualità del ridimensionamento dipende anche dal metodo che usi per ridimensionare i pixel. Di default mi sembra che col metodo che hai menzionato usi il bilineare ma non ne sono sicuro.
Ecco un'esempio:
codice:
Sub resizeImage(ByVal source As String, ByVal destination As String, ByVal altezza As Integer, ByVal larghezza As Integer, ByVal qualita As Integer)
Try
Dim bmp1 As New Bitmap(source)
Dim bmp2 As New Bitmap(larghezza, altezza, PixelFormat.Format24bppRgb)
Dim g As Graphics = Graphics.FromImage(bmp2)
g.InterpolationMode = InterpolationMode.HighQualityBicubic
g.DrawImage(bmp1, 0, 0, bmp2.Width, bmp2.Height)
g.Dispose()
Dim jgpEncoder As ImageCodecInfo = GetEncoder(ImageFormat.Jpeg)
Dim myEncoder As System.Drawing.Imaging.Encoder = System.Drawing.Imaging.Encoder.Quality
Dim myEncoderParameters As New EncoderParameters(1)
Dim myEncoderParameter As New EncoderParameter(myEncoder, qualita)
myEncoderParameters.Param(0) = myEncoderParameter
bmp2.Save(destination, jgpEncoder, myEncoderParameters)
bmp1.Dispose()
bmp2.Dispose()
Catch ex As Exception
End Try
End Sub