Graphics g1 = this.CreateGraphics();
Image MyImage = new Bitmap(Screen.PrimaryScreen.Bounds.Width,Screen.PrimaryScreen.Bounds.Height,g1);
Graphics g2 = Graphics.FromImage(MyImage);
IntPtr dc1 = g1.GetHdc();
IntPtr dc2 = g2.GetHdc();
BitBlt(dc2, 0, 0, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, dc1, 0, 0, 13369376);
g1.ReleaseHdc(dc1);
g2.ReleaseHdc(dc2);MyImage.Save(@"c:\Captured.jpg", ImageFormat.Jpeg); //这里转是吧?
具体的写法是什么?
1)我想把这图片能过udp发送到另一部机子上.
2)还有.另外一部机子怎么把它还原成图片呢?
3)想请教有没具体的代码.

解决方案 »

  1.   

    用Stream 文件流讀取你的Captured.jpg 然後用udp傳送到別一台計算機上Stream 文件流 的命名空間在System.IO 下
      

  2.   

    Bitmap img = new Bitmap("123.jpeg");
     System.IO.MemoryStream ms = new System.IO.MemoryStream();
     img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
      

  3.   


    我是楼主:发送端己经实现了发送.但在接收端有点问题.请看.
    发送:
    Stream sm=new MemoryStream();
    MyImage.Save(sm,System.Drawing.Imaging.ImageFormat.Jpeg);
    byte[] bb=new byte[sm.Length];
    sm.Read(bb,0,bb.Length); MessageBox.Show("文件大小"+sm.Length.ToString()); UdpClient udp=new UdpClient();
    IPEndPoint ipe=new IPEndPoint(IPAddress.Parse("192.168.1.55"),1234);
    udp.Send(bb,bb.Length,ipe);//  
    接收:
    UdpClient udp=new UdpClient(1234);
    IPEndPoint ap=new IPEndPoint(IPAddress.Any,0);
    byte[] bs=udp.Receive(ref ap);
    MessageBox.Show(bs.Length.ToString());
    Stream sm=new MemoryStream(bs,0,bs.Length);
    Image img2=Image.FromStream(sm); //这句有像误.它说使用了无效的参数.请问怎么回事.怎么在接收端把它还原成原来的图片?
    this.pictureBox1.Image=img2;
      

  4.   

    public byte[] Getimage()
    {
    FileStream s=File.OpenRead("c:\\text.gif");
    int bdata;
    System.IO.MemoryStream tempStream=new System.IO.Memorystream();//把图片放在内存的数组中去
    while((bdata=s.ReadByte())!=-1)
    {
    temStream.WriteByte(((byte)bdata));
    }
    s.Close();
    return tempStream.ToArray();
    }
    ----------
    //把图片显示出来
    byte[] imagebyte=Getimage();
    MemoryStream stream=new MemoryStream(imagebyte,o,imagebyte.length);
    Bitmap image=new Bitmap(stream);
    image.Save(Response.OutputStream,imageFormart.Gif);
      

  5.   

    /// <summary>
    /// 实现Image与byte[]之间的转换
    /// </summary>
    public class ConvertImage
    {
    private ConvertImage(){}
    /// <summary>
    /// 将byte[]转换为Image
    /// </summary>
    /// <param name="bytes">字节数组</param>
    /// <returns>Image</returns>
    public static Image ConvertByteToImage(byte[] bytes)
    {
    MemoryStream ms=new MemoryStream(bytes,0,bytes.Length);
    BinaryFormatter bf = new BinaryFormatter();
    object obj=bf.Deserialize(ms);
       ms.Close();
       return (Image)obj;
    }
    /// <summary>
    /// 将Image转换为byte[]
    /// </summary>
    /// <param name="image">Image</param>
    /// <returns>byte[]</returns>
    public static byte[] ConvertImageToByte(Image image)
    {
    MemoryStream ms=new MemoryStream();
    BinaryFormatter bf = new BinaryFormatter();
    bf.Serialize(ms,(object)image); 
    ms.Close();
    return ms.ToArray();
    }
    }
      

  6.   

    不行啊.我是己经有了个Bitmap对象了.怎么把它转到数组或流中.用udp传输.
    并不是读取本地的图片.
      

  7.   

    freehul(Leo) 这种方法基本上可以实现了.现在只是考虑怎么把它显示在picturebox中.
    pricture.image=ConvertImageToByte(bb);  //bb是个数组来的.
    ConvertImageToByte(bb).save("c:\\12.jpg",ImageFormat.Jpeg); //这样可以.
      

  8.   

    MemoryStream ms=new MemoryStream();
    newpic.Save(ms,ImageFormat.Jpeg);
    byte[] data=ms.ToArray();
      

  9.   

    pictureBox1.Image= Image.FromFile(textBox1.Text);
    MemoryStream mem = new MemoryStream();
    pictureBox1.Image.Save(mem,System.Drawing.Imaging.ImageFormat.Bmp);
    byte[] data1 = new byte[mem.Length];
    mem.Read(data1, 0,(int)mem.Length);