Cette fonction est l'adaptation d'une fonction écrite en C# (dont je ne me souviens plus de la source)
Elle permet de redimensionner de façon proportionnelle une image en lui attribuant la largeur et la hauteur maximale de l'image à afficher.
Source / Exemple :
''' <summary>
''' Permet de redimensionner une image de façon proportionnelle
''' </summary>
''' <param name="chemin">Chemin vers l'image</param>
''' <param name="Largeur">Largeur maximale</param>
''' <param name="Hauteur">Hauteur maximale</param>
''' <returns>Retourne l'image redimensionné</returns>
Private Function redimImage(ByVal chemin As String, Optional ByVal Largeur As Integer = 160, Optional ByVal Hauteur As Integer = 200)
Dim imageRedimensionne As Image
'On détermine les largeur et hauteur maximales
Dim largeurMax As Integer = Largeur
Dim hauteurMax As Integer = Hauteur
'Ratio à obtenir pour rentrer correctement notre image dans la PictureBox
Dim ratio As Double = largeurMax / hauteurMax
'On détermine l'image à traiter
Dim imgSource As Image
If chemin.Contains("http://") Then
imgSource = Image.FromStream(client.OpenRead(chemin))
Else
imgSource = Image.FromFile(chemin)
End If
Dim imgHauteur As Double = imgSource.Height
Dim imgLargeur As Double = imgSource.Width
Dim imgRatio As Double = imgLargeur / imgHauteur
If imgLargeur > largeurMax Or imgHauteur > hauteurMax Then
'Si l'image est plus grande (largeur ou hauteur)
If imgLargeur > largeurMax Then
'Si la largeur est plus longue
If 1 > imgRatio Then
'et si la hauteur est plus longue
imgHauteur = hauteurMax
If imgLargeur > imgSource.Height Then
'Si la largeur est plus grande que la hauteur d'origine
imgLargeur = imgHauteur / imgRatio
Else
'Si la largeur est moins grande ou égale à la hauteur d'origine
imgLargeur = imgHauteur * imgRatio
End If
Else
'Si la hauteur est plus longue
imgLargeur = largeurMax
If imgHauteur > imgSource.Width Then
'Si la hauteur est plus grande que la largeur d'origine
imgHauteur = imgLargeur / imgRatio
Else
'Si la hauteur est moins grande ou égale à la largeur d'origine
imgHauteur = imgLargeur / imgRatio
End If
End If
Else
'Si seule la largeur est plus longue
imgHauteur = hauteurMax
imgLargeur = imgHauteur * imgRatio
End If
'S'il y a eu un changement, on affiche notre nouvelle image
imageRedimensionne = imgSource.GetThumbnailImage(Convert.ToInt32(imgLargeur), Convert.ToInt32(imgHauteur), Nothing, IntPtr.Zero)
Else
'Sinon, on affiche l'image d'origine
imageRedimensionne = imgSource
End If
'On ferme notre image
imgSource.Dispose()
Return imageRedimensionne
End Function
Conclusion :
Exemple d'utilisation :
' Affiche une image issue du web de largeur max = 200 pixels et longueur max = 200 pixels
PictureBox1.Image = redimImage("
http://upload.wikimedia.org/wikipedia/commons/5/53/Shadow_2752.jpg",200,200)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.