Загрузка...

Как из сохранить картинку из потока? - C#

Тема в разделе C# создана пользователем Checkerchin 12 июл 2018. (поднята 12 июл 2018) 1128 просмотров

  1. Checkerchin
    Checkerchin Автор темы 12 июл 2018 178 16 апр 2017
    Доброго времени суток, расскажите пожалуйста, как мне сохранить картинку из потока.
    Пересылаю картинку по сокетам.

    Сервер:
    Код

    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();
    }

    Функция 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;
    }
     
Загрузка...
Top