Redimensionnement proportionnel d'une image (picturebox)

Contenu du snippet

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)

A voir également

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.