Zapis pliku bmp i wysłanie przez e-mail

0

Witam. Chcę zrobić taką rzecz, gdy wcisnę button w programie, program zrobi mi zdjęcie z pulpitu, zapisze to w pliku po czym wyśle jako załącznik na e-mail, e-mail ten odbiorę na komórcę. Teraz mam taki problem, potrafie zrobić z plikiem tymczasowym, potrafie zapisać do niego zdjęcie i wysłać go na e-mail, problem jest taki, że komórka nie obsługuje plików .tmp dlatego też chcę zrobić plik z rozszerzeniem .bmp. Przy stworzeniu pliku

File.Create(@"zdjecie.bmp");

wyskakuje mi taki błąd Object is currently in use elsewhere.

Dodaje normalnie załącznik jako @"zdjecie.bmp" , 0 błędów przy odpalaniu, lecz błąd wyskakuje w tmy miejscu             
```csharp
Application.Run(new Form1());

Prosiłbym o pomoc, gdyż bardzo tego potrzebuje. Z góry dziękuje

0

pokaż więcej kodu i stacktrace

0

Jeśli chodzi o operacje na plikach tymczasowych i rozszerzeniach:

string sciezka = Path.GetTempFileName();
string sciezkaBmp = Path.ChangeExtension(sciezka, "jpg");

Natomiast jeśli chodzi o zapis bitmapy do pliku, to jest to oddzielna sprawa i żadnego File.Create nie trzeba:

bitmap.Save("screen.jpg", ImageFormat.Jpeg);
0

Mam taki kod :

                    string ta = Path.GetTempFileName();
                    string sciezkaBmp = Path.ChangeExtension(ta, "jpg");

                    Size s = Screen.PrimaryScreen.Bounds.Size;
                    Bitmap bmp = new Bitmap(s.Width, s.Height);
                    Graphics g = Graphics.FromImage(bmp);
                    g.CopyFromScreen(0, 0, 0, 0, s);
                    pictureBox1.Image = bmp;

                    pictureBox1.Image.Save(sciezkaBmp);

                    SmtpClient client = new SmtpClient("smtp.wp.pl", 587);
                    client.Credentials = new NetworkCredential("", "");
                    MailMessage msg = new MailMessage();
                    msg.From = new MailAddress("");
                    msg.To.Add(new MailAddress(""));
                    Attachment at = new Attachment(sciezkaBmp);
                    msg.Attachments.Add(at);
                    msg.Subject = "Zdjecie";
                    msg.Body = "zdjecie";
                    client.Send(msg);

                    at.Dispose();

                    File.Delete(sciezkaBmp);

Lecz dalej wyskakuje ten błąd

0

Już wszystko działa, zamiast picturebox dałem

bmp.Save(sciezkaBmp);

tak jak somekind pokazał i działa, dzieki wielkie chłopaki !!

2

Bo nie zwalniasz uchwytu do pliku. Zarówno Graphics, jak i Bitmap powinny być w sekcji using, aby zostały zwalniane powiązane z nimi zasoby.

1 użytkowników online, w tym zalogowanych: 0, gości: 1