Доброго времени суток, расскажите пожалуйста, как мне сохранить картинку из потока. Пересылаю картинку по сокетам. Сервер: Socket sR = тут все правильно, оставил дабы не было вопросов что за sR byte[] buf = new byte[10000]; MemoryStream stream = new MemoryStream(buf); sR.Bind(new IPEndPoint(IPAddress.Any, 12)); sR.Listen(2); Socket clientR = sR.Accept(); clientR.Receive(buf); Image i = Image.FromStream(stream); i.Save("screenshot", ImageFormat.Png); //Тут исключение clientR.Close(); sR.Close(); Code Socket sR = тут все правильно, оставил дабы не было вопросов что за sR byte[] buf = new byte[10000]; MemoryStream stream = new MemoryStream(buf); sR.Bind(new IPEndPoint(IPAddress.Any, 12)); sR.Listen(2); Socket clientR = sR.Accept(); clientR.Receive(buf); Image i = Image.FromStream(stream); i.Save("screenshot", ImageFormat.Png); //Тут исключение clientR.Close(); sR.Close(); Исключение: Необработанное исключение типа "System.Runtime.InteropServices.ExternalException" в System.Drawing.dll Дополнительные сведения: В GDI+ возникла ошибка общего вида. Код клиента: if (message == "screen") { Image i = screen(); Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); byte[] buf = new byte[10000]; MemoryStream stream = new MemoryStream(buf); socket.Connect("127.0.0.1", 12); i.Save(stream, ImageFormat.Bmp); socket.Send(buf); socket.Disconnect(false); socket.Close(); } Code if (message == "screen") { Image i = screen(); Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); byte[] buf = new byte[10000]; MemoryStream stream = new MemoryStream(buf); socket.Connect("127.0.0.1", 12); i.Save(stream, ImageFormat.Bmp); socket.Send(buf); socket.Disconnect(false); socket.Close(); } Функция screen(): static Bitmap screen() { Bitmap bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppRgb); using (Graphics gr = Graphics.FromImage(bmp)){ gr.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy); } return bmp; } Code static Bitmap screen() { Bitmap bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppRgb); using (Graphics gr = Graphics.FromImage(bmp)){ gr.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy); } return bmp; }