Asp.net - comment créer une image de taille plus réduite en conservant la qualité maximum

Contenu du snippet

A partir de l'idée de la source :
- http://www.aspfr.com/code.aspx?ID=9088

et de la classe proposée par Mário Sobral :
- http://www.aranhix.net/foruns/ShowPost.aspx?PostID=41

J'ai simplement créé une procédure qui génère une image d'une largeur fixée (avec la hauteur respectant le rapport original) en conservant la qualité maximale. Le but de ma fonction est de réduire la taille de l'image donc l'image de la nouvelle taille remplace l'ancienne.

Source / Exemple :


' -----------------------------------------------------
Private Sub ResizeImage(ByVal CheminFichier As String, ByVal CheminFichierTemp As String, ByVal LargeurPrevue As Integer)
 Dim LargeurMiniature As Integer = LargeurPrevue 'On fixe la hauteur de l'image
 Dim HauteurMiniature As Integer = 0 'la Hauteur sera calculée
 Dim BMPTemp As System.Drawing.Bitmap
 Dim graphicTemp As System.Drawing.Graphics

 File.Copy(CheminFichier, CheminFichierTemp, True)
 File.Delete(CheminFichier)

 Dim bmp As New System.Drawing.Bitmap(CheminFichierTemp)
 HauteurMiniature = (bmp.Size.Height * LargeurMiniature / bmp.Size.Width)

 BMPTemp = New System.Drawing.Bitmap(LargeurMiniature, HauteurMiniature)
 graphicTemp = System.Drawing.Graphics.FromImage(BMPTemp)

 graphicTemp.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver
 graphicTemp.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality
 graphicTemp.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality
 graphicTemp.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
 graphicTemp.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality

 graphicTemp.DrawImage(bmp, 0, 0, LargeurMiniature, HauteurMiniature)
 graphicTemp.Dispose()

 BMPTemp.Save(CheminFichier, System.Drawing.Imaging.ImageFormat.Jpeg)
 BMPTemp.Dispose()
 bmp.Dispose()
 File.Delete(CheminFichierTemp)

End Sub

' -----------------------------------------------------

Conclusion :


Bon Coding.

Romelard Fabrice (Alias F___)

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.