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)想请教有没具体的代码.
System.IO.MemoryStream ms = new System.IO.MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
我是楼主:发送端己经实现了发送.但在接收端有点问题.请看.
发送:
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;
{
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);
/// 实现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();
}
}
并不是读取本地的图片.
pricture.image=ConvertImageToByte(bb); //bb是个数组来的.
ConvertImageToByte(bb).save("c:\\12.jpg",ImageFormat.Jpeg); //这样可以.
newpic.Save(ms,ImageFormat.Jpeg);
byte[] data=ms.ToArray();
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);