Picture noire enregistrer

hicham_899 Messages postés 43 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 1 mars 2011 - 17 févr. 2009 à 12:01
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 - 18 févr. 2009 à 07:46
bonjour
j'ai essayé d'enregitrer une image à partir picture box par ce code :

Bitmap bm=newBitmap(this.pictureBox1.Width,this.pictureBox1.Height); Graphics g Graphics.FromImage(bm);<?xml:namespace prefix o ns = "urn:schemas-microsoft-com:office:office" /??>

this.pictureBox1.Image=bm; // affecte le Bitmap à la propriété Image

bm.Save(@"D:\test.jpg", System.Drawing.Imaging.ImageFormat.jpeg); // Utilise la méthode Save de Bitmap

mais lorsque j'ai enrgistrée je trouve l'image noir pourquoi????????
<hr />

merci pour tous

16 réponses

xmox667 Messages postés 357 Date d'inscription jeudi 8 juin 2006 Statut Membre Dernière intervention 26 décembre 2011 4
17 févr. 2009 à 12:27
Salut,
C'est normal ton bitmap est vide.
Il faut utiliser la méthode DrawImage de la classe Graphics.
un [http://msdn.microsoft.com/fr-fr/library/system.drawing.graphics.drawimage%28VS.80%29.aspx [Lien]] : http://msdn.microsoft.com/fr-fr/library/system.drawing.graphics.drawimage(VS.80).aspx
A+
0
hicham_899 Messages postés 43 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 1 mars 2011
17 févr. 2009 à 14:00
execuse moi
j suis débutant en C# comment j'ai intégrée le méthode drwimage sur mon code

merci pour tous
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
17 févr. 2009 à 14:08
Hello,

Tu peux faire simplement

      Bitmap bmp = new Bitmap(pictureBox1.Image);
      bm.Save(@"D:\test.jpg", System.Drawing.Imaging.ImageFormat.jpeg);

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0
hicham_899 Messages postés 43 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 1 mars 2011
17 févr. 2009 à 14:21
j'ai essayé mais il donne message erreur suivant
"La référence d'objet n'est pas définie à une instance d'un objet."
merci pour tous
0

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

Posez votre question
xmox667 Messages postés 357 Date d'inscription jeudi 8 juin 2006 Statut Membre Dernière intervention 26 décembre 2011 4
17 févr. 2009 à 14:35
Salut,
Essaye ceci:

this
.pictureBox1.Image = bm;




Bitmap bmp = new Bitmap(

this
.pictureBox1.Image




);
bm.Save(@"D:\test.jpg", System.Drawing.Imaging.ImageFormat.jpeg);

A+
0
hicham_899 Messages postés 43 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 1 mars 2011
17 févr. 2009 à 14:42
j'ai réussi d'ajouter
Bitmap bmp = new Bitmap(pictureBox1.Image);
      bm.Save(@"D:\test.jpg", System.Drawing.Imaging.ImageFormat.jpeg);

mais toujour la même résultat

merci pour tous
0
hicham_899 Messages postés 43 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 1 mars 2011
17 févr. 2009 à 14:55
merci xmox
mais la résultat reste le même
merci pour tous
0
xmox667 Messages postés 357 Date d'inscription jeudi 8 juin 2006 Statut Membre Dernière intervention 26 décembre 2011 4
17 févr. 2009 à 15:01
Salut,

Ta variable bm est elle valide?
Contient t'elle une image ?

A+
0
hicham_899 Messages postés 43 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 1 mars 2011
17 févr. 2009 à 15:17
le programme qui j'ai fait pour enregistrer l'image
Bitmap

bm=
new
Bitmap(
this.pictureBox2.Width,
this.pictureBox2.Height);

Graphics g =
Graphics.FromImage(bm);

this.pictureBox2.Image=bm;
// affecte le Bitmap à la propriété Image

Bitmap bmp =
new
Bitmap(
this.pictureBox2.Image);bm.Save(

@"D:\ppImag.jpg", System.Drawing.Imaging.
ImageFormat.Jpeg);

merci pour tous
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 50
17 févr. 2009 à 15:23
Salut

Je vais juste résumer :
Pour récupérer l'image depuis une picturebox, c'est
maPictureBox.Image
(en lecture).
Pour afficher une image dans une picturebox, c'est
maPictureBox.Image
(en écriture).
Pour créer une bitmap d'une taille X*Y vide (noire) c'est
Bitmap bmp = new Bitmap(X, Y);


Pour créer une bitmap depuis une image, c'est
Bitmap bmp = new Bitmap(image);


Pour enregistrer une bitmap sur le disque, c'est
bmp.Save(chemin, format);






Tout ça c'est bien beau, mais il ne vaut pas oublier un truc : il faut bien charger une image ou dessiner dans un image si tu veux que l'image enregistrée ne soit pas noire. C'est de là que vient ton problème.

- "
La référence d'objet n'est pas définie à une instance d'un objet." dans ton cas c'est juste que ta picturebox ne contient pas d'image.
- Image noire ? C'est juste que tu as créé une bitmap vide et que tu as oublié de mettre quelque chose dedans avant de l'enregistrer.

Si tu comptes dessiner sur ton image, il faut utiliser les graphics, et faire du genre g.DrawLine() ou autre du genre. Si c'est une image sur ton disque dur, il faut faire Image.FromFile(chemin) pour la charger.

En gros, la question, c'est "D'où vient, à la base, l'image que tu souhaites enregistrer sur le disque dur ? (ou celle affichée dans ta picturebox, ça revient au même)"

PS : Le code de SharpMao est parfaitement bon (c'est, théoriquement pile ce que tu demandes), pourvu que tu aies quelque chose dans ta picturebox.


[../auteur/SHARPMAO/46230.aspx
]








Krimog :
while (!succeed = try()) ;
0
hicham_899 Messages postés 43 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 1 mars 2011
17 févr. 2009 à 16:09
mais le code ne marche pas

merci pour tous
0
hicham_899 Messages postés 43 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 1 mars 2011
17 févr. 2009 à 16:16
est ce que quelqu'un peut me donner le code complete pour faire cette opération
merci pour tous
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 50
17 févr. 2009 à 16:27
Le code de SharpMao marche parfaitement bien A CONDITION (encore une fois) qu'il y ait déjà une image dans ta picturebox.

D'où ma question, que je repose : Elle vient d'où l'image que tu souhaites enregistrer ? Parce que là, c'est exactement comme si je disais : "Fais moi une copie." => une copie de quoi ?

Ton problème ne vient pas de l'enregistrement, mais bien de la source. Si tu regardes, tu verras que ta picturebox est vide !

Si tu veux mettre quelque chose dedans, tu as 2 possibilités :
1) Tu mets une image dans ta picturebox
pictureBox1.Image = Image.FromFile(@"C:\mon image.jpg");
2) Tu dessines un truc dans ta picturebox
Image img = new Image(640, 480);
Graphics g = Graphics.FromImage(img);
// Là tu dessines
g.DrawLine(Pens.Black, new Point(1, 1), new Point(50, 30));
[...]
// Et enfin
pictureBox1.Image = img;

Et après, si tu veux l'enregistrer, le code de SharpMao marche niquel

Krimog :
while (!succeed = try()) ;
0
hicham_899 Messages postés 43 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 1 mars 2011
17 févr. 2009 à 16:40
merci pour votre explication


je vais expliqué ce que j'ai fait


j'ai travaillé sur un aplication capture image lorsque je clique sur le bouton capturer l'mage ,l'image capturer reste a pecture box est à la base de ce controle j'ai fait mon code c'est à dire l'image c'est pas vide

merci pour tous
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 50
17 févr. 2009 à 17:08
Au temps pour moi, il y a une petite erreur dans ton code, SharpMao (le prends pas mal ;-) c'est une erreur de frappe)
=>
      Bitmap bmp = new Bitmap(pictureBox1.Image);
      bmp.Save(@"D:\test.jpg", System.Drawing.Imaging.ImageFormat.jpeg);

il manquait le "p" à "bmp" sur la 2ème ligne. C'est bien sûr pour ça qu'il disait qu'il ne connaissait pas bm

Krimog :
while (!succeed = try()) ;
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
18 févr. 2009 à 07:46
Oui petite erreur de ma part.

J'ai l'habitude de nommer mes variable Bitmap bmp, et j'ai copié la 2ème ligne sans faire attention.

Par contre, j'ai trouvé encore plus simple :

pictureBox1.Image.Save(@"c:\test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);

Et le tour est joué...

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0