ASP.NET - COMMENT CRÉER UNE IMAGE DE TAILLE PLUS RÉDUITE EN CONSERVANT LA QUALIT
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 2010
-
4 mai 2004 à 20:48
Nightcourrier
Messages postés118Date d'inscriptiondimanche 12 octobre 2003StatutMembreDernière intervention28 mars 2008
-
28 févr. 2008 à 03:49
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Nightcourrier
Messages postés118Date d'inscriptiondimanche 12 octobre 2003StatutMembreDernière intervention28 mars 2008 28 févr. 2008 à 03:49
Wow !!!
Beau travail et Merci ! :)
ja001net
Messages postés10Date d'inscriptionjeudi 19 septembre 2002StatutMembreDernière intervention 1 août 2006 1 août 2006 à 11:55
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.
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 25 févr. 2005 à 13:02
Le but est justement de réduire la taille donc on telecharge vraiment des images de petites dimensions :)
tmcuh
Messages postés458Date d'inscriptiondimanche 22 décembre 2002StatutMembreDernière intervention18 avril 2009 25 févr. 2005 à 11:59
humm interressant quand on doit mettre des petites images à agrandir, mais la quantité à downloader reste la meme non?
cs_jcq
Messages postés211Date d'inscriptionvendredi 12 décembre 2003StatutMembreDernière intervention15 janvier 2010 9 juil. 2004 à 14:26
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).
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 4 mai 2004 à 20:48
oui pas mal
Cependant dans certains cas ce n'est pas la largeur qu'on fixe mais la hauteur.
Pour permettre de fixer la hauteur on pourrait alors faire un truc de ce style :
Public Sub ResizeImage(ByVal CheminFichier As String, ByVal CheminFichierTemp As String, ByVal LargeurPrevue As Integer)
If LargeurPrevue = 0 Then Throw New Exception("0 interdit !!!") : Exit Sub
ResizeImage(CheminFichier, CheminFichierTemp, LargeurPrevue, 0)
End Sub
Public Sub ResizeImage(ByVal CheminFichier As String, ByVal CheminFichierTemp As String, ByVal LargeurPrevue As Integer, ByVal HauteurPrevue As Integer)
If LargeurPrevue 0 And HauteurPrevue 0 Then Throw New Exception("0 interdit !!!") : Exit Sub
Try
Dim LargeurMiniature As Integer = LargeurPrevue 'On fixe la largeur de l'image
Dim HauteurMiniature As Integer = HauteurPrevue 'On fixe la hauteur de l'image
Dim BMPTemp As System.Drawing.Bitmap
Dim graphicTemp As System.Drawing.Graphics
28 févr. 2008 à 03:49
Beau travail et Merci ! :)
1 août 2006 à 11:55
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.
25 févr. 2005 à 13:02
25 févr. 2005 à 11:59
9 juil. 2004 à 14:26
4 mai 2004 à 20:48
Cependant dans certains cas ce n'est pas la largeur qu'on fixe mais la hauteur.
Pour permettre de fixer la hauteur on pourrait alors faire un truc de ce style :
Public Sub ResizeImage(ByVal CheminFichier As String, ByVal CheminFichierTemp As String, ByVal LargeurPrevue As Integer)
If LargeurPrevue = 0 Then Throw New Exception("0 interdit !!!") : Exit Sub
ResizeImage(CheminFichier, CheminFichierTemp, LargeurPrevue, 0)
End Sub
Public Sub ResizeImage(ByVal CheminFichier As String, ByVal CheminFichierTemp As String, ByVal LargeurPrevue As Integer, ByVal HauteurPrevue As Integer)
If LargeurPrevue 0 And HauteurPrevue 0 Then Throw New Exception("0 interdit !!!") : Exit Sub
Try
Dim LargeurMiniature As Integer = LargeurPrevue 'On fixe la largeur de l'image
Dim HauteurMiniature As Integer = HauteurPrevue 'On fixe la hauteur de l'image
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)
If HauteurMiniature = 0 Then
HauteurMiniature = (bmp.Size.Height * LargeurMiniature / bmp.Size.Width)
End If
If LargeurMiniature = 0 Then
LargeurMiniature = (bmp.Size.Width * HauteurMiniature / bmp.Size.Height)
End If
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)
Catch ex As Exception
Throw New Exception(ex.Message)
End Try
End Sub
Ce bout de code permet de garder la compatibilité avec celui ci dessus et offre une hyper rapide gestion d'erreur :)