Har en winform med en PictureBox. Læser billede ind ved at bruge PicTureBox.Image = File.ImageFromFile(Sti) Prøver at gemme billede igen som PictureBox.Save.
Jeg er helt blank angående den process som har adgang til mit billede.
Jeg prøvede at lave et eksempel, og ganske rigtig, der sker en fejl, når man først bruger Image.FromFile(), og derefter Image.Save().
Jeg løste det ved at kopiere indholdet af billedefilen til en memorystream, lukke FileStream'en, og bruge Image.FromStream til at åbne det med. Derefter virker Image.Save.
Se koden herunder:
MemoryStream memStream = new MemoryStream();
// åben fil using (FileStream fileStream = File.OpenRead("c:\\temp\\eksperten_logo.gif")) { //kopier til memorystream byte[] buffer = new byte[1024]; int bytesRead; do { bytesRead = fileStream.Read(buffer, 0, buffer.Length); memStream.Write(buffer, 0, bytesRead); } while (bytesRead > 0); } // åben billede fra memoryStream. this.pictureBox1.Image = Image.FromStream(memStream);
// Nu kan billedet gemmes this.pictureBox1.Image.Save("c:\\temp\\eksperten_logo.gif");
Ja, og mit link viser bare at det enten er en bug eller feature i .NET og hvordan du også kan løse det. Dog i VB.NET, men fremgangs måden er jo den samme i C#.
Og så er den måde MS beskriver vist et par linjer kortere.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.