krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 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.
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 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
hicham_899
Messages postés43Date d'inscriptionjeudi 6 mai 2004StatutMembreDerniè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
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 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