IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[ASP.NET VB.NET]Possibilité de redimensionner une image


Sujet :

ASP.NET

  1. #1
    Membre confirmé Avatar de Azephel
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut [ASP.NET VB.NET]Possibilité de redimensionner une image
    Bonjour!

    Je voudrais savoir s'il est possible que lorsqu'un utilisateur upload une image sur le serveur, on redimensionne l'image à une certaine taille (hauteur/largeur) afin d'éviter de le faire à chaque affichage.

    Ca m'arrangerait énormément de pouvoir le faire au moment où l'utilisateur l'envoie!

    En tout cas d'avance pour vos réponses!

  2. #2
    Membre confirmé Avatar de Azephel
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut
    Personne n'a d'idée ou d'avis?

  3. #3
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 400
    Par défaut
    Bonjour

    Voilà un bout de code qui peut t'aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
            Structure dimension
                Dim nHauteur As Int16
                Dim nLargeur As Int16
            End Structure
            .......
             Try
                    Dim sFileImg As String = (sNomImg)
                    Dim oDimImage As dimension
                    Dim oImage As System.Drawing.Image
                    oImage = System.Drawing.Image.FromFile(sFileImg)
                    oDimImage.nHauteur = oImage.Height()
                    oDimImage.nLargeur = oImage.Width()
                    Return oDimImage
               Catch ex As Exception
                    Return Nothing
               End Try
    C'est pas commenté, désolé, mais j'ai pas le temps
    Par contre il faut travaillé sur une image sur le serveur. Donc soit sur un fichier temporaire soit sur un flux.

    Bon courage

  4. #4
    Membre confirmé Avatar de Azephel
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut
    Merci beaucoup!
    Et c'est pas grave pour les commentaires ^^
    Ce bout de code est à éxécuter une seule fois quand l'utilisateur choisi son image, donc il ne reste plus qu'à sauvegarder l'image que cette fonction renvoit, ou alors cette fonction permet à chaque affichage de redimmensionner l'image?

    En tout cas, que ce soit l'un ou l'autre, la fonction va bien me servir! Merci beaucoup!

  5. #5
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 400
    Par défaut
    Re Bonjour

    J'utilise cette fonction au moment de l'upload. Les dimensions données deviennent les dimensions physiques de l'image. Attention donc au ratio et à la résolution .

    A bientôt

  6. #6
    Membre confirmé Avatar de Azephel
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut
    Alors là, je dis chapeau ! C'est exactement ce que je cherchais!
    Merci beaucoup!


  7. #7
    Membre confirmé Avatar de Azephel
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut
    Aurais-tu plus le temps maintenant pour m'expliquer comment tu l'utilise, comment elle fonctionne?
    Je n'ai jamais vraiment utilisé les structures, donc je vois pas trop à quoi ça sert non plus

    Et ce que la fonction retourne, c'est justement la structure, comment tu l'applique à l'image?

    En tout cas merci bien!

  8. #8
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 400
    Par défaut
    Arf effectivement il manque la moitié du truc... Me suis gouré de méthode

    Bon ben il faudra attendre que je sois au boulot demain
    Mais sinon en fouillant autour de la classe System.Drawing.Image tu devrais trouver ton bonheur si tu es pressé

    Bonne soirée et encore désolé

  9. #9
    Membre confirmé Avatar de Azephel
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut
    Non non, ne sois pas désolé, c'est pas grave.
    Je ne suis pas hyper pressé, mais si aujourd'hui tu peux le poster ce serait super bien
    Bonne journée et encore merci en tout cas!

  10. #10
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 400
    Par défaut
    Bonjour

    Voilà la bonne fonction, oublis la structure c'est une complication supplémentaire inutile . Voilà la bonne méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
        Private Function PhotoEnregistreRetaille(ByVal sCibleDossier As String, ByVal oImageSource As System.Drawing.Image, ByVal HauteurImage As Int16, ByVal LargeurImage As Int16) As Boolean
            Try
                Dim oImageCible As System.Drawing.Bitmap = New System.Drawing.Bitmap(LargeurImage, HauteurImage, oImageSource.PixelFormat)
                Dim oGraphique As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(oImageCible)
                oGraphique.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality
                oGraphique.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
                oGraphique.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality
                oGraphique.DrawImage(oImageSource, 0, 0, oImageCible.Width, oImageCible.Height)
                oGraphique.Dispose()
                Dim ImgFormat As System.Drawing.Imaging.ImageFormat = System.Drawing.Imaging.ImageFormat.Jpeg
                oImageCible.Save(sCibleDossier, ImgFormat)
                Return True
            Catch exThread As Threading.ThreadAbortException
                Throw exThread
            Catch ex As Exception
                'RealTimeTrace(ex)
                'Server.Transfer("Error.aspx")
                Return False
            End Try
        End Function
    Toujours pas commenté ça devient une mauvaise habitude .

    Bonne journée

  11. #11
    Membre confirmé Avatar de Azephel
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut
    J'ai remarqué qu'il faut envoyer à cette fonction une system.drawing.image, or comment je fais pour lui envoyer cela? Sachant que quand j'appelle cette fonction, l'utilisateur vient tout juste de rentrer une photo qui vient d'être sauvegardée sur le serveur, donc j'ai une string, comme ceci: UploadPhoto.FileName, qui me donne le nom et l'extension de la photo.

    Comment dire que la photo que je viens d'enregistrer est un system.drawing.image, afin que je l'envoie à ta fonction?

    Merci beaucoup pour ton aide en tout cas. Sans toi je chercherais encore!

  12. #12
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 400
    Par défaut
    (Re) Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    'sFileImg:chemin physique de l'image sur le serveur
    'exemple: C:\WebSite\MonSitePrefere\Images\MonImage.jpg
    Dim oImage As System.Drawing.Image
    oImage = System.Drawing.Image.FromFile(sFileImg)
    A bientôt

  13. #13
    Membre confirmé Avatar de Azephel
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut
    Je viens de remarquer qu'en lui envoyant un System.Drawing.Bitmap, cela ne créai pas d'erreur. J'espère que ça va fonctionner!

  14. #14
    Membre confirmé Avatar de Azephel
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut
    Je viens de voir ton post ^^

    Aller, je croise les doigts, étant donné que j'ai un peu modifié ta fonction, il se peut que j'ai fait des erreurs dedans

    EDIT: Euh non rien en fait...

  15. #15
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 400
    Par défaut
    Re

    Oui, effectivement le nom de paramètre n'est pas top . C'est bien le fichier image. Exemple:C:\WebSite\MonSitePrefere\Images\MonImage.jpg

    Par contre je crois pas que tu puisses écrire sur l'image d'origine, j'avais eut des soucis avec ça . Tu me diras

  16. #16
    Membre confirmé Avatar de Azephel
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut
    J'ai cette exception qui est lancée :

    Un objet Graphics ne peut pas être créé à partir d'une image au format pixel indexé.

    Elle est lancée quand le programme tente de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim oGraphique As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(oImageCible)
    Du coup, la fonction ne redimensionne pas

    Que de soucis pour réduire une image...

  17. #17
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 400
    Par défaut
    Arf

    Tu travailles sur un Gif à coup sûr. Si c'est le cas, le redimensionnement n'est pas possible (chaque pixel est indexé si tu redimensionnes tu modifis le nombre de pixel et donc l'index ).

  18. #18
    Membre confirmé Avatar de Azephel
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut
    Bon alors ça ne fonctionne pas sur les GIF?

    Mais dans ce cas-là, je tentais de redimensionner un jpg. Je viens de tester avec une autre image JPG et là ça fonctionne. Sauf que j'ai une autre exception ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oImageCible.Save(Server.MapPath("~\xxxxx\"), ImgFormat)
    Avec un message super clair (ironiquement parlant) :
    Une erreur générique s'est produite dans GDI+.

  19. #19
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 400
    Par défaut
    Re

    Les gif tu peux pas parcequ'un Gif est en mode "Couleurs Indexées". Le redimmensionnement n'est possible qu'avec des images en mode "RVB" ou "Niveau de gris".

    C'est étonnant que ta première image Jpg soit en "Couleurs Indexées" sachant que la qualité de ce mode est bien moins bonne qu'en "RVB".

    Bref, pour ce qui de l'exception je dirai que c'est parceque tu essais de sauvegarder l'image sur le fichier d'origine, l'exception est inévitable puisque tu essais d'enregistrer sur un fichier qui est en lecture exclusive puisque ton objet oImageSource est branché dessus (suis-je clair? pas sûr ).

    Enregistres ton image sous un autre nom et supprime l'ancienne .

  20. #20
    Membre confirmé Avatar de Azephel
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut
    Oui tu es clair! (enfin, pour moi )

    Sinon, si je supprime d'abord et que j'enregistre ensuite, ça marche aussi?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [ASP.NET] Non mise en cache d'une image
    Par Azephel dans le forum ASP.NET
    Réponses: 2
    Dernier message: 07/09/2007, 12h36
  2. [VB.NET] Redimensionner une image dans un PictureBox
    Par Monster77 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 05/04/2007, 18h24
  3. [VB.NET][2.0] Redimensionner une image
    Par DotNET74 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/06/2006, 09h30
  4. [VB.NET] [WinForms] Afficher un rectangle sur une image
    Par Noodles dans le forum Windows Forms
    Réponses: 3
    Dernier message: 20/12/2004, 10h36
  5. [VB.NET] Redimensionner une image proportionnelement
    Par Monster77 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/10/2004, 12h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo