Problème à la sauvegarde d'une image

cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012 - 15 juin 2009 à 17:09
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 - 16 juin 2009 à 00:02
Bonjour,

J'ai un problème à la sauvegarde d'une image.

Cette image est chargée de la manière suivante :
Dim MyStream As FileStream = New FileStream(My.Application.Info.DirectoryPath & strPath & "" & Me.Path & "" & Me.Nom, FileMode.Open)

' On Crée le FileStream sur le fichier image
myImage = Image.FromStream(MyStream)
' On affecte l'image à pictureBox1
MyStream.Close()

myImage est déclarée comme suit :
Dim myImage As Drawing.Image = Nothing

L'image (.jpg) est correctement chargée.

Lorsque je regarde avec l'espion la variable myImage, je vois que son type est drawing.bitmap et non drawing.image.

Si j'essaye d'enregistrer au format jpeg cette image :

Me.Photo.Save(My.Application.Info.DirectoryPath & "" & OwwiUtilities.GetAppParam("ImagePath") & Me.Path & "" & Me.Nom, System.Drawing.Imaging.ImageFormat.Jpeg)

, j'obtiens l'erreur suivante :
Une erreur générique s'est produite dans GDI+.

Je pense que cela viens du changement de format.

Quelqu'un a-t-il une idée ?

Merci d'avance




++
 Moustachu

4 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
15 juin 2009 à 17:44
Bonjour,

Je ne sais pas si cela est du à la méthode via laquel tu charge ton image mais...
La classe Image est une classe Abstraite (MustHerits) elle ne peut donc pas être instancié c'est donc normal que l'image de ton picturebox soit une System.Drawing.Bitmap, classe héritante des propriétés de la classe Image. Cela n'a rien à voir avec la méthode de chargement, sous vb une Bitmap est une image, qui peut être converti en plusieurs format comme le démontre ta ligne de code plus haut.

Cependant, si tu pense que cela vient de la méthode de chargement de ton image, alors essaye ceci :

pictureBox1.Image = New Bitmap("Mon fichier image").

@+ Mayzz.
                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
15 juin 2009 à 18:04
En regardant ton poste en détail (c'est assez dur à cause de la mise en forme...) je peux constaté un erreur de code ou d'énnoncé à toi de me dire...

Dim MyStream As FileStream = New FileStream(My.Application.Info.DirectoryPath & strPath & "" & Me.Path & "" & Me.Nom, FileMode.Open)
' On Crée le FileStream sur le fichier image
myImage = Image.FromStream(MyStream)
' On affecte l'image à pictureBox1 <=== Ou est PictureBox1 ???? Quel ligne affecte l'image ????
MyStream.Close()
'myImage est déclarée comme suit :
Dim myImage As Drawing.Image = Nothing
'L'image (.jpg) est correctement chargée.
'Lorsque je regarde avec l'espion la variable myImage, je vois que son type est drawing.bitmap et non drawing.image. Si j'essaye d'enregistrer au format jpeg cette image : Me.Photo.Save(My.Application.Info.DirectoryPath & "" & OwwiUtilities.GetAppParam("ImagePath") & Me.Path & "" & Me.Nom, System.Drawing.Imaging.ImageFormat.Jpeg) <= Me.Photo.Save ???? Qu'est ce que Photo ? ton picturebox ??? c'est pas PictureBox1 ??? 

Si c'est le cas alors c'est Photo.Image.Save et non Photo.Save.

Si c'est juste une erreur d'énnoncé (vu que tu dis avoir vu le type d'image dans ton picturebox) ce doit être à cause du format d'image d'entrée qui ne doit pas être compatible avec celle que tu enregistre en sortie ?

Mayzz.

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
0
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
15 juin 2009 à 22:30
Bonsoir,
Merci pour ta réponse

C'est lair que la mise en page n'est pas top... j'ai un tout petit textbox pour écrire.

Je ne travaille pas avec un picturebox (mauvais commentaire !). Mon image est une propriété d'une classe. C'est la propriété Photo.

Lorsque je charge une image depuis la boite de dialogue par System.Drawing.Image.FromFile(dlgOpenFile.FileName) je peux sauvegarder.

En revanche, lorsque je charge mon objet, l'image est lue via Image.FromStream(MyStream)

C'est pour cela que je pense que ça vient du chargement.


++
Moustachu
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
16 juin 2009 à 00:02
Tu as essayé Photo = New Bitmap("Mon fichier image") ?

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
0
Rejoignez-nous