Erreur lors de la sauvegarde picturebox

Résolu
paulhochon Messages postés 35 Date d'inscription samedi 15 décembre 2018 Statut Membre Dernière intervention 15 janvier 2019 - Modifié le 15 déc. 2018 à 15:34
paulhochon Messages postés 35 Date d'inscription samedi 15 décembre 2018 Statut Membre Dernière intervention 15 janvier 2019 - 17 déc. 2018 à 11:22
Bonjour, je suis débutant et je viens d'avoir une erreur dans mon code lors de la sauvegarde de mon image:
Une exception non gérée du type 'System.Runtime.InteropServices.ExternalException' s'est produite dans System.Drawing.dll

Informations supplémentaires : Une erreur générique s'est produite dans GDI+.

D’où cela peut'il venir ?

 ' sauve logo dans chemin appli
' Inscrire le nom du dossier de l'image
Dim file_name As String = Application.ExecutablePath
file_name = file_name.Substring(0, file_name.LastIndexOf("\bin")) &
"\LogoSociete."
' Recevoir l'image
Dim bm As Bitmap = PicBoxLogo.Image
' Sauvez l'image en bitmap.
bm.Save(file_name & "bmp", System.Drawing.Imaging.ImageFormat.Bmp)


Merci à vous

7 réponses

Whismeril Messages postés 18304 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 avril 2023 622
15 déc. 2018 à 15:56
Bonjour

voici ma procédure pour poster un code correctement lisible
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Pour travailler avec les chemins de fichiers, je te conseille d'utiliser l'objet Path dans System.IO
https://docs.microsoft.com/fr-fr/dotnet/api/system.io.path?view=netframework-4.7.2

Ensuite, mets un point d'arrêt à la ligne
bm.Save(file_name & "bmp", System.Drawing.Imaging.ImageFormat.Bmp)

Vérifie le contenu de bl, puis de file_name, et enfin ce que donne
file_name & "bmp"
(manquerait un . que ça ne m'étonnerais pas)
0
paulhochon Messages postés 35 Date d'inscription samedi 15 décembre 2018 Statut Membre Dernière intervention 15 janvier 2019
Modifié le 15 déc. 2018 à 16:35
Merci pour ton aide: attention je débute (1 mois).

Voilà le code complet:

   Private Sub BtnSauvClient_Click(sender As Object, e As EventArgs) Handles BtnSauvClient.Click

        'sauvegarder un artisan

        Dim sauve As New SaveFileDialog
        sauve.Filter = "Texte|*.artisan"
        If sauve.ShowDialog = 1 Then  'utilisateur a t'il choisi un chemin
            TBoxChemArti.Text = sauve.FileName

            ' sauvegarde du flux des textbox dans fichier

            Dim StrWrite As New System.IO.StreamWriter(TBoxChemArti.Text)

            StrWrite.WriteLine(TexBox1Vous.Text)
            StrWrite.WriteLine(TexBox2Vous.Text)
            StrWrite.WriteLine(TexBox3Vous.Text)
            StrWrite.WriteLine(TexBox4Vous.Text)
            StrWrite.WriteLine(TexBox5Vous.Text)
            StrWrite.WriteLine(TexBox6Vous.Text)
            StrWrite.WriteLine(TexBox7Vous.Text)
            StrWrite.WriteLine(TexBox8Vous.Text)
            StrWrite.WriteLine(TexBox9Vous.Text)
            StrWrite.WriteLine(TexBox10Vous.Text)
            StrWrite.WriteLine(TexBox11Vous.Text)


            'Fermeture du flux
            StrWrite.Close()
        End If

        ' sauve logo dans chemin appli
        ' Inscrire le nom du dossier de l'image
        Dim file_name As String = Application.ExecutablePath
        file_name = file_name.Substring(0, file_name.LastIndexOf("\bin")) &
        "\LogoSociete."
        ' Recevoir l'image
        Dim bm As Bitmap = PicBoxLogo.Image
        ' Sauvez l'image en bitmap.
        bm.Save(file_name & "bmp", System.Drawing.Imaging.ImageFormat.Bmp)

    End Sub


Une image (jpg ou autre) chargée dans le pcturebox en est bien sauvegardée en bmp.

Le code plante en fait (je viens de tester) si je clique sur le bouton "annuler" lors de l'enregistrement avec la boite "SaveFileDialog".

Qu'est-ce qu'un point d'arrêt?
0
Whismeril Messages postés 18304 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 avril 2023 622
15 déc. 2018 à 16:58
Hum, vu la couleur de ton code, je pense que tu n'as pas choisi "basic", mais bon c'est déjà plus lisible que le premier.

Le code plante en fait (je viens de tester) si je clique sur le bouton "annuler" lors de l'enregistrement avec la boite "SaveFileDialog".

Logique, tu as mis le code de sauvegarde en dehors du if, donc il est exécuté mais si tu annules.

Qu'est-ce qu'un point d'arrêt?

Apprendre le langage c'est une chose, il faut aussi apprendre à ce servir de ton IDE.
Je suppose qu'il s'agit de Visual Studio https://docs.microsoft.com/fr-fr/visualstudio/debugger/using-breakpoints?view=vs-2017
L'exemple se sert d'un code C#, mais c'est pareil en VB.Net

0
paulhochon Messages postés 35 Date d'inscription samedi 15 décembre 2018 Statut Membre Dernière intervention 15 janvier 2019
Modifié le 15 déc. 2018 à 17:36
Merci; je viens de replacer mon "end if" à la fin (des copier/coller malheureux) et bien sur, cela fonctionne.

ok pour le point d’arrêt pour le débogage pas à pas.

Je progresse doucement mais pour moi la meilleure façon d'apprendre est sur le tas (j'ai le temps) ce qui n'est pas forcement le cas pour un jeune en école ou les bases sont primordiales pour aller vite.
0
Whismeril Messages postés 18304 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 avril 2023 622
15 déc. 2018 à 20:17
Oui et non, je suis autodidacte aussi, j.au fait l’impasse sur les bases au début aussi, j’avais le temps aussi. Et un jour c’est mii qui était dans l’impasse, parce que certains concepts de base m’étaient totalement inconnus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
paulhochon Messages postés 35 Date d'inscription samedi 15 décembre 2018 Statut Membre Dernière intervention 15 janvier 2019
16 déc. 2018 à 16:13
Oui mais c'est aussi à cela que sert un forum plein de membres performants étant prêts à aider les débutants comme moi ;)
Le partage de connaissances fait avancer plus vite et permet de ne pas réinventer la roue à chaque fois mais de partir au moins sur une bonne piste dès le début.
Merci à toutes ces personnes !
0
Whismeril Messages postés 18304 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 avril 2023 622
16 déc. 2018 à 18:58
Sauf qu'il m'a fallut reprendre mon projet de 0 pour le finaliser.
Franchement, prendre quelques jours (si t'es bon y'a pas besoin de plus longtemps) pour suivre un cours
Y'a celui de Plassere, très bien (à l'exception près selon moi qu'il prend l'objet pour une mode alors que c'est l'essence de .Net)
http://plasserre.developpez.com/cours/vb-net/

Ou celui d'openclassroom, bien plus objet mais moins accessible
0
paulhochon Messages postés 35 Date d'inscription samedi 15 décembre 2018 Statut Membre Dernière intervention 15 janvier 2019
17 déc. 2018 à 11:22
OK j'ai mis le cours de Plassere dans mes favoris ;)
0
Rejoignez-nous