allora quando file l'UPLOAD della foto chiami la funzione Ridimensiona cosi:
Ridimensiona2(path, filename, "x", "y")
x e y naturalmente sono numeri.
e poi scrivi questa e non modificare nulla
ci ho messo una settimana per la compressione però ti garantisco che funziona.codice:Public Function Ridimensiona2(ByVal path As String, ByVal myUName As String, ByVal width As Integer, ByVal high As Integer) 'Comiciamo inizializzando alcune variabili per l'anteprima: Dim objBMP As System.Drawing.Image Dim objGraphics As System.Drawing.Image 'prendiamo alcune informazioni importanti dall'immagine orginale objBMP = New Bitmap(path & myUName) Dim imgw As Integer = objBMP.Width Dim imgh As Integer = objBMP.Height 'Ora possiamo ridimensionare in scala l'immagine prendendo i valori dati in input. Questa misura è valida sia che l'immagine sia puù alta o più lunga. ' Creating a Thumbnail with scale Dim newimgw As Integer Dim newimgh As Integer If imgw > imgh Then newimgw = width newimgh = (imgh * width) / imgw ElseIf imgh > imgw Then newimgw = high newimgh = (imgh * high) / imgw Else newimgw = width newimgh = high End If 'Ora possiamo creare l'anteprima 'objGraphics = objBMP.GetThumbnailImage(newimgw, newimgh, Nothing, IntPtr.Zero) 'comprimo Dim compression As Long = "80" Dim myImageCodecInfo As System.Drawing.Imaging.ImageCodecInfo Dim myEncoder As System.Drawing.Imaging.Encoder Dim myEncoderParameter As System.Drawing.Imaging.EncoderParameter Dim myEncoderParameters As System.Drawing.Imaging.EncoderParameters myImageCodecInfo = GetEncoderInfo("image/jpeg") myEncoder = System.Drawing.Imaging.Encoder.Quality myEncoderParameters = New System.Drawing.Imaging.EncoderParameters(1) myEncoderParameter = New System.Drawing.Imaging.EncoderParameter(myEncoder, compression) myEncoderParameters.Param(0) = myEncoderParameter objGraphics = objBMP.GetThumbnailImage(newimgw, newimgh, Nothing, IntPtr.Zero) objGraphics.Save(path & "thumb" & myUName, myImageCodecInfo, myEncoderParameters) End Function Private Function GetEncoderInfo(ByVal MYmimeType As String) Dim i As Integer Dim encoders As System.Drawing.Imaging.ImageCodecInfo() = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders() For i = 0 To (encoders.Length - 1) If (encoders(i).MimeType = MYmimeType) Then Return encoders(i) End If Next i End Function
L'unica cosa che puoi modificare è questa:
Dim compression As Long = "80"
che sarebbe il livello di compressione.
ciao

Rispondi quotando