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
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
ci ho messo una settimana per la compressione però ti garantisco che funziona.
L'unica cosa che puoi modificare è questa:
Dim compression As Long = "80"
che sarebbe il livello di compressione.
ciao