PICTUREBOX

cs_colby 111 Messages postés mardi 10 mai 2005Date d'inscription 23 mars 2018 Dernière intervention - 14 mars 2018 à 11:13 - Dernière réponse : cs_colby 111 Messages postés mardi 10 mai 2005Date d'inscription 23 mars 2018 Dernière intervention
- 20 mars 2018 à 10:30
Bonsoir et soyez indulgent à l'égard des débutants.
J'ai une form avec un picturebox et une base access
avec une colonne Img1 prenant comme donnée Objet OLE.

Pour enregistrer l'image, j'ai fait:
Dim MS As New IO.MemoryStream() 
Me.PicureBx.Image.Save(MS, Me.PictureBx.Image.RawFormat)
Dim ArrImage() As Byte = MS.GetBuffer 
DTR("Img1") = ArrImage
'(DTR est le DataRow)

Pour afficher l'image enregistrée j'ai fait:

Dim arrPicture() As Byte = CType(CrT.Rows(RowN).Item("Img1"), Byte())
Dim MS As New MemoryStream(ArrPicture)
   With Me.PictureBx
      .Image = Image.FromStream(MS)
      .SizeMode = PictureBoxSizeMode.StretchImage
      .BorderStyle = BorderStyle.FixedSingle
   End With
MS.Close()
'(Ici Crt est le DataTable et Rown est un integer)

Jusque là cela se comporte bien.

le problème :
Après affichage, je décide de modifier un enregistrement en remplaçant
l'ancienne image afficheée lors de l'appel par une autre image.
Alors j'ai fais:
Me.PictureBx.Image = Nothing

et après avoir sélectionné une nouvelle image, j'ai fait:
Dim MS As New IO.MemoryStream() 
Me.PicureBx.Image.Save(MS, Me.PictureBx.Image.RawFormat)
Dim ArrImage() As Byte = MS.GetBuffer 
DTR("Img1") = ArrImage

La nouvelle image séléctionnée ne s'enregistre pas, et j'obtient comme résultat :

Une exception non gérée du type
'System.Runtime.InteropServices.ExternalException' s'est produite dans
System.Drawing.dll

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

--
Afficher la suite 

Votre réponse

22 réponses

vb95 1568 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 21 mai 2018 Dernière intervention - 16 mars 2018 à 17:43
0
Utile
Bonjour
As-tu chargée la nouvelle image dans la PictureBox une fois l'image sélectionnée ?
Commenter la réponse de vb95
0
Utile
Oui, c'est quand je remplace la première image chargée dans le picturebox par une autre et voudrais enregistré la nouvelle image que je reçois l'erreur. Merci
vb95 1568 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 21 mai 2018 Dernière intervention - 17 mars 2018 à 15:28
bonjour
La Picturebox affiche-t-elle la nouvelle image chargée ?
A quelle ligne se produit l'erreur ?
Commenter la réponse de cs_colby
0
Utile
Oui, la nouvelle image est correctement chargée. C'est lors de l'enregistrement de l'image dans la base que je reçois comme erreur:
Une exception non g?r?e du type
'System.Runtime.InteropServices.ExternalException' s'est produite dans
System.Drawing.dll

Informations compl?mentaires : Une erreur g?n?rique s'est produite dans GDI+
vb95 1568 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 21 mai 2018 Dernière intervention - 18 mars 2018 à 13:18
A quelle ligne se produit l'erreur ?
Commenter la réponse de cs_colby
0
Utile
Me.PicureBx.Image.Save(MS, Me.PictureBx.Image.RawFormat)
vb95 1568 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 21 mai 2018 Dernière intervention - 18 mars 2018 à 22:59
bizarre !
Tu arrives à enregistrer l'image à l'origine !
Tu la modifiés dans la Picturebox et avec le même code elle ne s'enregistre pas !
Commenter la réponse de cs_colby
0
Utile
Oui, et a chaque fois a la ligne ou l'image est sauvée au format Raw, une exception est levée.
J'ai essayé de supprimer la ligue complète dans la base et de procéder a l'enregistrement d'une nouvelle ligne, idem.
Comment faire?
vb95 1568 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 21 mai 2018 Dernière intervention - 19 mars 2018 à 03:01
Alors là je n'en sais rien !
Désolé
Commenter la réponse de cs_colby
0
Utile
Merci quand même pour l'écoute.
Commenter la réponse de cs_colby
Whismeril 11542 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 mai 2018 Dernière intervention - 19 mars 2018 à 08:17
0
Utile
Bonjour
Au départ comment as tu enregistré l’image dans la base?
cs_colby 111 Messages postés mardi 10 mai 2005Date d'inscription 23 mars 2018 Dernière intervention - 19 mars 2018 à 08:39
Type byte, après qu'il soit sauvé au format raw.
Dim MS As New IO.MemoryStream()
Me.PicureBx.Image.Save(MS, Me.PictureBx.Image.RawFormat)
Dim ArrImage() As Byte = MS.GetBuffer
DTR("Img1") = ArrImage
Whismeril 11542 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 mai 2018 Dernière intervention - 19 mars 2018 à 09:41
Ok, donc dans les 2 cas tu utilises bien le même code.
Et comment tu modifies l’image?

Ps utilise la coloration syntaxique quand tu postes un code
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Commenter la réponse de Whismeril
cs_colby 111 Messages postés mardi 10 mai 2005Date d'inscription 23 mars 2018 Dernière intervention - 19 mars 2018 à 14:56
0
Utile
A l'aide d'un bout de code trouvé sur vbfrance. Je clic sur le picturebox qui me conduit a mes images j'en choisi une et elle s'affiche. Jai limité le choix a .jpg et a .bmp

--
vb95 1568 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 21 mai 2018 Dernière intervention > cs_colby 111 Messages postés mardi 10 mai 2005Date d'inscription 23 mars 2018 Dernière intervention - 20 mars 2018 à 01:59
Et aussi
J'aurais aussi accepté tes excuses !
Mais je vois que je n'y a pas droit !
cs_colby 111 Messages postés mardi 10 mai 2005Date d'inscription 23 mars 2018 Dernière intervention > vb95 1568 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 21 mai 2018 Dernière intervention - 20 mars 2018 à 10:30
Bonjour, les premières excuses sont pour vous tous toi y compris.
pour Wismerill; c'est juste que je viens de retrouver un ancien coach lorsque j'ai débuté. soit pas vexé, tu compte pour moi, vu le mal que tu t'es donné pour me répondre, merci infiniment.
Whismeril 11542 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 mai 2018 Dernière intervention - 19 mars 2018 à 16:37
A l'aide d'un bout de code trouvé sur vbfrance

Je rejoins vb95, s’il n’y avait que 10 codes sur le site, un jour ou je suis motivé, je tacherai peut-être de trouver par moi-même, mais y’en a des millers ....
vb95 1568 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 21 mai 2018 Dernière intervention - 20 mars 2018 à 01:57
Salut

Tu écris : "Maintenant j'ai fait un update dans la base."

Dans la Sub ValiderMiseAJour()
                Dim MS1 As New IO.MemoryStream() 
                Me.Pic1.Image.Save(MS1, Me.Pic1.Image.RawFormat)
                Dim ArrImage1() As Byte = MS1.GetBuffer 
                DTR("Img1") = ArrImage1


Pourquoi Me.Pict1 et nom Me.PicureBx ?

A part cela
1 ) Mélange de VB 6 et de VB Net :
On Error Resume Next
c'est du VB 6 ! Surtout que tu utilises
Try Catch
ailleurs qui gère les erreurs en VB Net
2)
Not String.Compare(TestFile.Extension, ".bmp", True) = 0 
: il y a une méthode plus VB Net pour avoir l'extension
System.Io.Path.GetExtension(fileName)

3) Supprimer dans les références du projet la référence Microsoft.visualBasic : ceci évite de mélanger du VB 6 avec du VB Net
4) Dans l'onglet Compiler mettre Option Strict et Option Explicit sur True : ceci oblige de déclarer toutes les variables et d'éviter les erreurs de type de variable

5) et pour finir : un bon cours sur VB Net : http://plasserre.developpez.com/cours/vb-net/
Whismeril 11542 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 mai 2018 Dernière intervention - 20 mars 2018 à 07:12
Bonjour, merci d’avoir essayé d’utliser la coloration syntaxique.
Cependant, il n’y a que des pavés gris, c’est parce que tu n’as pas spécifié que tu voulais de la couleur pour basic.
C’est pourtant décrit dans la petite procédure que je t’ai mis en lien.

En plus des remarques judicieuses de Vb95 sur le mélange vb6 / vb.net (il y a d’autres exemples dans le code), je pense qu’il a peut être mis le doigt sur le problème, une fois tu enregistres ce que contient PictureBx et une autre fois Pict1. Y’a t il bien une image dans Pict1?
Commenter la réponse de cs_colby
0
Utile
Mes excuses svp, je discute avec vous depuis mon mobile. Je tacherai de ne plus répondre si je ne suis pas devant mon ordi. Une fois encore mes excuses. Suis toujours débutant puisque je codes par plaisir et pour aider de temps en temps.
Commenter la réponse de cs_colby

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.