none
请教下tcp 如何接收和发送图片 RRS feed

  • 问题

  • streamToClient,streamToSserver 是NetWorkStream

    在服务器端 我是这样发送图片的,在客户端怎么显示图片呢

      Image img = Image.FromFile(@"I:\WinForm\C#\TcpTest\TcpTest\bin\Debug\7.gif");
                    System.IO.MemoryStream _ImageMem = new System.IO.MemoryStream();
                    img.Save(_ImageMem, ImageFormat.Gif);
                    byte[] _ImageBytes = _ImageMem.GetBuffer(); 
                     
                   // buffer = Encoding.Unicode.GetBytes(msg);
                    lock(streamToClient){
                        streamToClient.Write(_ImageBytes, 0, _ImageBytes.Length);
                    }

    客户端接收
     int bytesRead;
                            buffer = new byte[BufferSize];                     
                            lock(streamToServer){
                                bytesRead = streamToServer.Read(buffer, 0, BufferSize);
                            }

    bytesRead 怎么转化成图片呢?
    客户端是asp.net 服务器端是winform
    2010年2月11日 1:43

答案

  • bytesRead 是个 int,能够转换为 Image 的可能性无限接近于零。要转也是用 buff 转

                byte[] bytes = new byte[1024];
                MemoryStream stream = new MemoryStream(bytes);
    
                Image img = Image.FromStream(stream);
    


    前提是你完整地把这张图片接收下来了
    • 已标记为答案 ogra 2010年2月11日 9:12
    2010年2月11日 3:15

全部回复

  • bytesRead 是个 int,能够转换为 Image 的可能性无限接近于零。要转也是用 buff 转

                byte[] bytes = new byte[1024];
                MemoryStream stream = new MemoryStream(bytes);
    
                Image img = Image.FromStream(stream);
    


    前提是你完整地把这张图片接收下来了
    • 已标记为答案 ogra 2010年2月11日 9:12
    2010年2月11日 3:15
  • 你好,
    没错,是将图片转换成Bit数组,这段代码会对你有用

    public static byte[] BitmapToBytes(Bitmap Bitmap)
            {
                MemoryStream ms
    = null;
               
    try
                {
                    ms
    = new MemoryStream();
                    Bitmap.Save(ms, Bitmap.RawFormat);
                   
    byte[] byteImage = new Byte[ms.Length];
                    byteImage
    = ms.ToArray();
                   
    return byteImage;
                }
               
    catch (ArgumentNullException ex)
                {
                   
    throw ex;
                }
               
    finally
                {
                    ms.Close();
                }
            }




    微软(黑龙江).Net俱乐部
    我们要把爱心传递给更多需要帮助的人。
    http://terryfeng.cnblogs.com
    http://t.sina.com.cn/terryfeng
    http://www.terryfeng.com
    2010年2月11日 14:07