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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 18 228 fois - Téléchargée 29 fois

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

Ajouter un commentaire Commentaires
Messages postés
118
Date d'inscription
dimanche 12 octobre 2003
Statut
Membre
Dernière intervention
28 mars 2008

Wow !!!

Beau travail et Merci ! :)
Messages postés
10
Date d'inscription
jeudi 19 septembre 2002
Statut
Membre
Dernière intervention
1 août 2006

Bonjour,

J'utilise cette méthode pour créer des images réduites à partir d'images plus grandes ;)
Cependant, la qualité des images réduites n'est vraiment pas bonne et les images sont très "pixelisées". La résolution des images source est de 300 dpi alors que la résolution des images créées est de 96 dpi. Y'a t'il un moyen de spécifier la résolution de sortie pour les miniatures ?

Merci d'avance.
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Le but est justement de réduire la taille donc on telecharge vraiment des images de petites dimensions :)
Messages postés
458
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
18 avril 2009

humm interressant quand on doit mettre des petites images à agrandir, mais la quantité à downloader reste la meme non?
Messages postés
211
Date d'inscription
vendredi 12 décembre 2003
Statut
Membre
Dernière intervention
15 janvier 2010

je trouve ça trés bon comme code, même si je n'ai pas tout compris(enfin je pense mais suis pas sur, je connais pas bien l'artecture .net).
Afficher les 6 commentaires

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.