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

VB.NET Discussion :

Problème d'écrasement de fichier avec saveFileDialog


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 355
    Par défaut Problème d'écrasement de fichier avec saveFileDialog
    Bonjour à tous
    Dans un programme que j'ai fait pour traiter des images, je les affiche dans deux pictureBox, pbDroite et pbGauche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Private Sub AffichePhoto(ByVal Fic As String)
            MaPhoto1 = New System.Drawing.Bitmap(Fic)
            MaPhoto2 = MaPhoto1
            HP = MaPhoto1.Height
            LP = MaPhoto1.Width
            pbDroite.Image = MaPhoto1
            pbGauche.Image = MaPhoto2
            .............
    Après traitement de mon image dans pbDroite, je la sauvegarde avec les instructions suivantes :

    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
        Sub Enregistrer()
            ' Affiche un SaveFileDialog afin que l'utilisateur puisse sauvegarder  l'Image retouchée
            Dim saveFileDialog1 As New SaveFileDialog()
            saveFileDialog1.Filter = "JPeg Image|*.jpg"
            saveFileDialog1.Title = "Enregistre un fichier Image"
            saveFileDialog1.InitialDirectory = Dossier
            saveFileDialog1.ShowDialog()
     
            'Si le nom du fichier n'est pas une chaîne vide, l'ouvre pour l'enregistrement
            If saveFileDialog1.FileName <> "" Then
                'Enregistre l'image via un "FileStream" créé par la méthode OpenFile
                Dim fs As System.IO.FileStream = CType(saveFileDialog1.OpenFile(), System.IO.FileStream)
                Me.pbDroite.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg)
                fs.Close()
            End If
        End Sub
    Si je ne change pas le nom du fichier dans saveFileDialog1, il me demande si je veux écraser le fichier existant, je répond OUI + OK, mais le programme plante sur la ligne
    Dim fs As System.IO.FileStream = CType(saveFileDialog1.OpenFile(), System.IO.FileStream)en signalant ce qui suit :
    Le processus ne peut accèder au fichier car il est en cours d'utilisation par un autre processus.
    Quelqu'un sait-il comment faire ?
    Merci de votre réponse.

    Claude Azoulai

  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
    C'est parce que quand tu fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaPhoto1 = New System.Drawing.Bitmap(Fic)
    L'objet Bitmap reste associé au fichier et le garde ouvert. Il faut passer par un stream :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Using fs As FileStream = File.OpenRead(Fic)
        MaPhoto1 = New System.Drawing.Bitmap(fs)
    End Using
    Comme ça tu fermes le fichier aussitôt après avoir chargé l'image

  3. #3
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Et avec ceci ?

    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If saveFileDialog1.FileName <> "" Then
            Dim fs As New FileStream(saveFileDialog1.FileName, FileMode.Create)
            Me.pbDroite.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg)
            fs.Close()
    End If

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 355
    Par défaut
    Merci à tomlev

    J'ai modifié les instructions en utilisant un bloc Using comme tu me l'a indiqué.

    Mais sur la même ligne que précédement, j'ai une autre erreur, à savoir ;
    Une erreur générique s'est produite dans le GDI+
    Cela te dit-il quelque chose ?

    J'ai essayé la formulation de Er3van mais c'est la même erreur

    Claude Azoulai

Discussions similaires

  1. problème de recuperation de fichier avec find
    Par david_12 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 28/03/2007, 14h37
  2. Problème pour ouvrir un fichier avec firefox 2.0
    Par peptofr dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 19/12/2006, 17h37
  3. Problème de chemin de fichier avec des espaces
    Par Akronyme dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 11/12/2006, 17h12
  4. [Upload] Problème upload de gros fichiers avec Firefox
    Par the rootsm@n dans le forum Langage
    Réponses: 12
    Dernier message: 19/02/2006, 20h43
  5. [CKEditor] problème de chemin de fichier avec fck editor
    Par Benjiijneb dans le forum Bibliothèques & Frameworks
    Réponses: 7
    Dernier message: 31/01/2006, 09h05

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