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 :

Redimensionnement d'image


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut Redimensionnement d'image
    Bonjour

    Je cherche sur le net depuis deux heures et je trouve un script qui revient tout le temps, mais en C# et visiblement, ça ne se traduit pas en VB.

    Bref, mon idée est de pouvoir modifier la largeur d'une image qui vient d'être uploadée sur le serveur.

    Alors j'essaie avec le fameux script qui utilise un System.Drawing.Image, mais y a un truc que je capte pas, l'histoire du CallBack (voir code plus bas)
    Donc, soit ça marche pas en VB (ce que j'ai vu sur je sais plus quel forum), soit je suis un crétin !
    Mais peut être qu'il y a une autre méthode ?

    Voici le code que j'essaie de faire fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    imageUrl = "/exemple/images/" & imageUrl 
    Dim fullSizeImg As System.Drawing.Image = System.Drawing.Image.FromFile(Server.MapPath(imageUrl)) 
    Dim dCallBack As New System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback)
    Sur le ThumbnailCallback il me dit :
    System.Drawing.Image.GetThumbnailImageAbort' est un type délégué et il requiert une seule expression 'addressof' en tant qu'unique argument du constructeur.
    Et voici l'originale en C# (pour les bilingues)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    imageUrl = "/exemple/images/" + imageUrl;
    System.Drawing.Image fullSizeImg = System.Drawing.Image.FromFile(Server.MapPath(imageUrl));
    System.Drawing.Image.GetThumbnailImageAbort dCallBack = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
    Merci pour votre aide.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    imageUrl = "/exemple/images/" & imageUrl 
    Dim fullSizeImg As System.Drawing.Image = System.Drawing.Image.FromFile(Server.MapPath(imageUrl)) 
    Dim dCallBack As New System.Drawing.Image.GetThumbnailImageAbort(AddressOf ThumbnailCallback)
    enfin je crois...

  3. #3
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Le code de tomlev devrait marcher

  4. #4
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Trop fort les gars, merci.

    Bon, maintenant, les soucis qui en découlent :
    d'abords, fucking Autocomplétion. Si elle c'était mise en route au bon moment j'aurais vu cette erreur et surtout j'aurais mieux compris. Bref !

    Sinon, ça passe, disons que le code ne présente plus d'erreur.

    Maintenant j'ai un autre soucis et je comprends pas ce que me raconte la doc. Une fois que me transformation est faite, je peux enregistrer le fichier.

    si je lui file le même chemin il me plante une "erreur générique dans GDI+" et si je change le nom du fichier il em dit :
    ERREUR: Le processus ne peut pas accéder au fichier 'c:\inetpub\wwwroot\App_Themes\GeneralMeet\PhotoMembre\65bb1386-fa7b-4938-a9f0-1853c8998f8cph1.jpg', car il est en cours d'utilisation par un autre processus.
    Et là je vois pas bien comment faire pour contourner ce problème.

    Mon code actualisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim fullSizeImg As System.Drawing.Image = System.Drawing.Image.FromFile(NomCheminPhoto)
            Dim dCallBack As New System.Drawing.Image.GetThumbnailImageAbort(AddressOf ThumbnailCallback)
            fullSizeImg.GetThumbnailImage(400, 300, dCallBack, IntPtr.Zero).Save(Replace(NomCheminPhoto, ".jpg", "tum.jpg"))

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    C'est parce que quand tu ouvres une image avec FromFile, le fichier reste ouvert... 2 solutions possibles :
    - ouvrir un FileStream sur le fichier, créer l'image à partir du FileStream (Image.FromStream), et refermer le FileStream
    - lire les données binaires du fichier avec File.ReadAllBytes, créer un MemoryStream sur ces données, et créer l'image à partir du MemoryStream (encore Image.FromStream)

  6. #6
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci tomlev.

    L'ennui c'est je capte rien à ce que raconte la doc du FileStream. La manipulation de fichier n'est pas mon truc apparement.

    J'arrive pas à comprendre comment on lie le FileStream au fichier sur le serveur. Tu aurais un bout de code en exemple ?

Discussions similaires

  1. [VB.NET] Redimensionner une image dans un PictureBox
    Par Monster77 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 05/04/2007, 18h24
  2. Redimensionner une image...
    Par RhaZieL dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 22/07/2005, 09h30
  3. [réglé][JSP - Resin] Redimensionnement d'images ...
    Par Claude Pelletier dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 24/03/2005, 18h47
  4. [VB.NET] Redimensionner une image proportionnelement
    Par Monster77 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/10/2004, 12h10
  5. [MX2004] redimensionner une image lors du chargement
    Par ouinouin dans le forum Flash
    Réponses: 8
    Dernier message: 18/02/2004, 18h32

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