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

  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 : 44
    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 : 46
    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 : 44
    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 ?

  7. #7
    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 : 44
    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
    Citation Envoyé par zooffy Voir le message
    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 ?

    C'est pourtant pas bien compliqué

    En plus tu me fais écrire du code VB.NET alors que j'ai horreur de ça

    Bon, alors de tête ça donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    imageUrl = "/exemple/images/" & imageUrl 
    Dim stream As New FileStream(Server.MapPath(imageUrl), FileMode.Open, FileAccess.Read)
    Dim fullSizeImg As System.Drawing.Image = System.Drawing.Image.FromStream(stream)
    stream.Close()
    ...

  8. #8
    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 pour ton aide et pour ton effort sur le VB.

    J'avasi pas compris la chose comme ça, effectivement c'est simple, mais bon, je devais avoir la tête farcie hier.

    Sinon, je viens de mettre le code en place. Mais il est pas content avec le chemin que je lui file.
    il me dit qu'il est pas valide et qu'il veut un chemin relatif ou absolu.
    Je lui passe ça comme argument, qu'il me restitue dans le mesage d'erreur et le chemin est bon et pointe bien sur un fichier présent sur le disque :
    c:\inetpub\wwwroot\App_Themes\GeneralMeet\PhotoMembre\65bb1386-fa7b-4938-a9f0-1853c8998f8cph1.jpg
    Là, je sèche.

  9. #9
    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
    Je viens de faire une autre essai qui me parassait débile et là, j'y perds mon assembleur :
    avec ce chemin là :
    c:/inetpub/wwwroot/App_Themes/GeneralMeet/PhotoMembre/65bb1386-fa7b-4938-a9f0-1853c8998f8cph1.jpg
    il me fait un message d'erreur tout pourri :
    Mémoire insuffisante.
    sur le ligne de code qui retaille l'image.
    Dedieu, j'ai 2 Go de RAM sur ma machine !

    Déjà que le chemin est tout pourri, mais en plus il gère rien comme il faut dérrière.

    Vois tu d'où pourrait venir le souci ?

  10. #10
    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 : 44
    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
    euh... alors là je vois plus
    si le chemin du fichier est bon, je vois pas pourquoi il rale...

    sinon pour le coup de la mémoire insuffisante, commence par redémarrer...

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

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