ASP.NET - COMMENT GÉNÉRER UNE MINIATURE CONFORME À UN FICHIER IMAGE INITIAL

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 4 sept. 2003 à 19:03
cs_inessa Messages postés 5 Date d'inscription samedi 28 octobre 2006 Statut Membre Dernière intervention 28 février 2007 - 28 févr. 2007 à 12:23
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/9088-asp-net-comment-generer-une-miniature-conforme-a-un-fichier-image-initial

cs_inessa Messages postés 5 Date d'inscription samedi 28 octobre 2006 Statut Membre Dernière intervention 28 février 2007
28 févr. 2007 à 12:23
Bonjour
En fait j'ai essayé cet exemple et je suis encore débutante dans vb.net
mais rien ne ce passe à l'execution

voilà le code
*****
Dim MonRepertoirePhysique As String = "I:\Cuisines"

Dim MonFichierImage As String = "a.jpg"

Dim MonFichierMiniature As String = "a2.jpg"

Dim LargeurMiniature As Integer = 100 'On fixe la hauteur de l'image

Dim HauteurMiniature As Integer = 0 'la Hauteur sera calculée
Dim bmp As New System.Drawing.Bitmap(MonRepertoirePhysique & MonFichierImage)

Dim MonCallBackDeCalvaire = New System.Drawing.Image.GetThumbnailImageAbort(AddressOf ThumbnailCallback)
Function ThumbnailCallback() As Boolean
Return False
End Function


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load





HauteurMiniature = (bmp.Size.Height * LargeurMiniature / bmp.Size.Width)
bmp = bmp.GetThumbnailImage(LargeurMiniature, HauteurMiniature, MonCallBackDeCalvaire, IntPtr.Zero)
bmp.Save(MonRepertoirePhysique & MonFichierMiniature, System.Drawing.Imaging.ImageFormat.Jpeg)
bmp.Dispose()


End Sub
*****
Merci d'avance
BaFM Messages postés 64 Date d'inscription mercredi 24 juillet 2002 Statut Membre Dernière intervention 26 novembre 2009
10 déc. 2004 à 21:47
Salut,
pour regler le problème par le pointeur null, ce serais pas plutôt le mot clé Nothing à utiliser dans VB.NET ?

bmp = bmp.GetThumbnailImage(LargeurMiniature, HauteurMiniature, Nothing, IntPtr.Zero)
MG
titanserver Messages postés 8 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 31 janvier 2011
28 sept. 2004 à 00:43
Merci Jean Luc pour ton astuce sa fonction nikel maintenant, encore merci ;-)
cs_jl75 Messages postés 15 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 24 mars 2006
27 sept. 2004 à 17:36
Salut,
J'ai mis le temps mais j'ai trouvé un tour de passe-passe pour contourner le problème (c'est pas tres propre mais ça marche!)

' ajouter la fonction tour de passe-passe:
Function ThumbnailCallback() As Boolean
Return False
End Function
'declaration du call back
MonCallBackDeCalvaire = New _
System.Drawing.Image.GetThumbnailImageAbort(AddressOf ThumbnailCallback)
' et remplacer "AddressOf CallBackAbort" par "MonCallBackDeCalvaire" dans le code original comme ci-dessous:

bmp = bmp.GetThumbnailImage(LargeurMiniature, HauteurMiniature, MonCallBackDeCalvaire, IntPtr.Zero)

Et le tour est joué !

Bon courage
Jean-Luc
titanserver Messages postés 8 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 31 janvier 2011
27 sept. 2004 à 15:40
Bonjour,
J'ai également un soucis avec 'CallBackAbort' il me demande de le déclarer mais comment ?

Merci
cs_jl75 Messages postés 15 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 24 mars 2006
23 août 2004 à 14:38
salut
j'ai remplacé 'callback abort" par "null" comme susdit
mais rebelotte: "null" is not declared."
(dot net: quel calvaire !)
j'ai essayé plein d'autres trucs expliqué sur msdn mais rien ne marche
qui peut me dire ce qui ne va pas?
Merci
cs_fabrice69 Messages postés 1765 Date d'inscription jeudi 12 octobre 2000 Statut Membre Dernière intervention 11 décembre 2013 5
4 mai 2004 à 20:02
Pour ceux qui cherchaient une réduction de la taille en conservant la qualité, voila une autre solution :
- http://www.aspfr.com/code.aspx?ID=22522

F___
cs_fabrice69 Messages postés 1765 Date d'inscription jeudi 12 octobre 2000 Statut Membre Dernière intervention 11 décembre 2013 5
30 avril 2004 à 16:54
Remplace cette partie par null, ca suffit :

bmp = bmp.GetThumbnailImage(LargeurMiniature, HauteurMiniature, null , IntPtr.Zero)

F___
golumest Messages postés 1 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 30 avril 2004
30 avril 2004 à 13:54
hello,
un ptit pb avc le code: qd je l'execute j'ai:"Name 'CallBackAbort' is not declared."

j'ai chercher sur le net des explications sur le type de variable 'callback abort" pr la version asp de "GetThumbnailImage" mais rien trouver...


any help pliz?

merci!
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
15 avril 2004 à 18:50
Non ce ne sera pas une surcharge, car tu genereras les vignettes qu'une seule fois, ensuite les miniatures sont sauvegardé :

bmp.Save(MonRepertoirePhysique & MonFichierMiniature, System.Drawing.Imaging.ImageFormat.Jpeg)

tu n'aura donc qu'a aller chercher ta miniature sans rien regenerer
dedzep Messages postés 54 Date d'inscription vendredi 1 février 2002 Statut Membre Dernière intervention 8 février 2007
15 avril 2004 à 14:32
desolé mais une question de reactivité
est-ce bien resonable pour un site de ecommerce par exemple.
j'explique. un client peu me demander tous les accessoires pour une voiture donnée.
Actuellement je gere les images ET les vignettes.
avec ta proposition n'ai-je pas un risque de fort ralentissement si j'ai par exemple 100 "vignettes" a générer à la volée ?
cs_fabrice69 Messages postés 1765 Date d'inscription jeudi 12 octobre 2000 Statut Membre Dernière intervention 11 décembre 2013 5
4 sept. 2003 à 19:30
Je sais que la qualité est limitée avec GetThumbnailImage mais dans mon cas, je voulais des miniature de 100 px de large.
Donc la qualité moyenne me suffit largerment, d plus je veux surtout un poids plus léger pour les fichiers.
D'ou l'utilisation de cette technique qui est vraiment plus simple.

Il est quand meme intéressant pour ceux qui ont la qualité qui prime de voir le code de C2I.

F___
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
4 sept. 2003 à 19:03
Ta source est bien est très simple :)

Mais la methode GetThumbnailImage d'apres c2i.fr fait des images de moyenne qualité

Il est donc preferable d'utiliser la methode decrite dans cette page : http://www.c2i.fr/code.aspx?IDCode=503 qui en plus permet de controler la compression du jpeg
mais le code devient beaucoup plus complexe, et je n'ai pas fait de test poussé sur les differentes methodes pour comparer la qualité et le poid, j'ai juste constaté que dans mon cas, la qualité etait meilleur avec la methode c2i.fr maintenant a vu de juger
:)
Rejoignez-nous