begin process at 2010 02 10 15:57:11
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

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

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


 Information sur la source

Note :
9,33 / 10 - par 3 personnes
9,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Source .NET ( DotNet ) Niveau :Débutant Date de création :03/09/2003 Date de mise à jour :26/10/2003 22:31:59 Vu :13 646

Auteur : fabrice69

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note


 Description

Dans des projet WEB, souvent on tombe sur une gestion des Images à faire, que ce soit pour un annuaire, un catalogue, etc. ...

Ainsi, la création de miniature est souvent un gain pour l'utilisateur Final (client WEB) qui ne télécharge que les miniature et si la miniature lui plait il va alors chercher l'image à la taille réelle.

Mais pour les gestionnaire du site, il est pénible de générer et d'uploader 2 images (Miniature et taille réelle), de ce fait, la génération par le Framework de cette miniature est une solution à exploiter dans ce cas de figure.

Voila donc simplement comment faire.

Source

  • ' On va fournir une image avec une hauteur et Largeur X et Y, et fixer la largeur de la miniature (en pixel),
  • ' la hauteur de la miniature se calcule alors en proportion
  • Dim MonRepertoirePhysique as string = "C:\MoRepertoireImage\"
  • Dim MonFichierImage as string = "MonImage.jpg"
  • Dim MonFichierMiniature as string = "MonImageMiniature.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)
  • HauteurMiniature = (bmp.Size.Height * LargeurMiniature / bmp.Size.Width)
  • bmp = bmp.GetThumbnailImage(LargeurMiniature, HauteurMiniature, AddressOf CallBackAbort, IntPtr.Zero)
  • bmp.Save(MonRepertoirePhysique & MonFichierMiniature, System.Drawing.Imaging.ImageFormat.Jpeg)
  • bmp.Dispose()
' On va fournir une image avec une hauteur et Largeur X et Y, et fixer la largeur de la miniature (en pixel), 
' la hauteur de la miniature se calcule alors en proportion

Dim MonRepertoirePhysique as string = "C:\MoRepertoireImage\"
Dim MonFichierImage as string = "MonImage.jpg"
Dim MonFichierMiniature as string = "MonImageMiniature.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)
HauteurMiniature = (bmp.Size.Height * LargeurMiniature / bmp.Size.Width)

bmp = bmp.GetThumbnailImage(LargeurMiniature, HauteurMiniature, AddressOf CallBackAbort, IntPtr.Zero)
bmp.Save(MonRepertoirePhysique & MonFichierMiniature, System.Drawing.Imaging.ImageFormat.Jpeg)
bmp.Dispose()

 Conclusion

La Classe System.Drawing possède de très nombreuses possibilités et la génération de miniature n'est qu'un petit aprecu.

Bon coding.

-----------------------------------

[Art icle cité sur le Flash Microsoft MSDN France] :
http://www.microsoft.com/france/msdn/abonnements /flash/archives/030922.html

--------------------- --------------

Romelard Fabrice (Alias F___)


 Sources du même auteur

Source .NET (Dotnet) SHAREPOINT 2007 - OBTENIR LA LISTE DES WEBPARTS DANS UNE PAG...
Source .NET (Dotnet) SHAREPOINT 2007 - OBTERNIR LA LISTE DES FEATURES D'UN SITE
Source avec une capture Source .NET (Dotnet) SHAREPOINT 2007 - CHARGER LA LISTE DES COLLATIONS SHAREPOINT...
Source avec une capture Source .NET (Dotnet) SHAREPOINT 2007 - CHARGER LA LISTE DES LANGUES INSTALLÉES DA...
Source .NET (Dotnet) C# - FONCTION TRÈS SIMPLE POUR ENVOYER UN MAIL VIA SMTP

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) CLASS CHARTS, HISTOGRAMCHART ET SECTORCHART par The Red Man
EXTRACTION D'INFORMATIONS IPTC D'UNE IMAGE par teenage
Source avec Zip Source avec une capture Source .NET (Dotnet) MANIPULATION D'IMAGES EN TEMPS RÉEL - RÉDUCTION COMPRESSION ... par badrbadr
Source avec Zip Source avec une capture Source .NET (Dotnet) UTILISATION D’AJAX ET D’UN WEBSERVICE POUR LA GÉNÉRATION D’I... par tikrimi
REDIMENSIONNER UNE IMAGE - ASPIMAGE par Keneyda

Commentaires et avis

Commentaire de jesusonline le 04/09/2003 19:03:59 administrateur CS

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
:)

Commentaire de fabrice69 le 04/09/2003 19:30:47 administrateur CS

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___

Commentaire de dedzep le 15/04/2004 14:32:17

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 ?

Commentaire de jesusonline le 15/04/2004 18:50:28 administrateur CS

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

Commentaire de golumest le 30/04/2004 13:54:12

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!

Commentaire de fabrice69 le 30/04/2004 16:54:07 administrateur CS

Remplace cette partie par null, ca suffit :

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

F___

Commentaire de fabrice69 le 04/05/2004 20:02:00 administrateur CS

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___

Commentaire de jl75 le 23/08/2004 14:38:20

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

Commentaire de titanserver le 27/09/2004 15:40:36

Bonjour,
J'ai également un soucis avec 'CallBackAbort' il me demande de le déclarer mais comment ?

Merci

Commentaire de jl75 le 27/09/2004 17:36:59

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

Commentaire de titanserver le 28/09/2004 00:43:04

Merci Jean Luc pour ton astuce sa fonction nikel maintenant, encore merci ;-)

Commentaire de BaFM le 10/12/2004 21:47: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

Commentaire de inessa le 28/02/2007 12:23:37

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

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales