Witam,
ostatnio pisząc aplikację w C# natrafiłem na dość dziwny (dla mnie :] ) problem. Otóż mam kontrolkę PictureBox do której ładuję plik typu jpg poprzez metodę PictureBox.Load(path). Dalej próbuję zapisać obrazek za pomocą PictureBox.Image.Save(path2, format). Gdy zapisuję plik jako typ bmp (format = ImageFormat.Bmp) to wszystko działa pięknie. Lecz gdy próbuję zapisać jako jpeg lub png to funkcja rzuca mi wyjątek "System.Runtime.InteropServices.ExternalException'". Z tego co wyczytałem z msdn to pojawia się on gdy próbujemy zapisać do tego samego pliku (u mnie zapisuję do innego). Dziwi mnie, czemu błąd nie pojawia się podczas zapisu do bmp, a wystepuje przy jpg (przecież plik bazowy też był tego typu, więc nie powinno być żadnych problemów z konwersją).
Gdy zaś zamiast PictureBox.Load ładuję plik jedną z następujących metod:
pbWallpaper.ImageLocation = dlgOpen.FileName;
pbWallpaper.Image = new Bitmap(dlgOpen.FileName);
pbWallpaper.Image = Image.FromFile(dlgOpen.FileName);
to owy problem w ogóle nie występuje. Jednyna wskazówka, jaką znalazłem na stronie
http://support.microsoft.com/kb/814675/en-us , dotyczy próby zapisu do tego samego pliku co otwarty (u mnie zapisuje do innego).
Co może być przyczyną takiego zachowania ? Dodam jeszcze, że ładowanie pierwszym sposobem (PictureBox.Load) plików typu png lub bmp nie powoduje żadnych kłopotów podczas zapisywania do dowolnego formatu.