我只想将屏幕上的图像bmp保存到我得到的内存流中:
值不能为null。参数名称编码器
我使用此代码
pmb = new Bitmap(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
gc = Graphics.FromImage(pmb);
gc.CopyFromScreen(0, 0, 0, 0, new Size(pmb.Width, pmb.Height));
pb.Image = pmb;
pb.SizeMode = PictureBoxSizeMode.StretchImage;
try
{
client = new TcpClient(mm.Text, 1430);
ms = new MemoryStream();
pb.Image.Save(ms, pb.Image.RawFormat);
ms.Close();
byte[] buffer = ms.GetBuffer();
ns = client.GetStream();
br = new BinaryWriter(ns);
br.Write(buffer);
br.Close();
ns.Close();
client.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
答案 0 :(得分:2)
关闭后,您正在访问MemoryStream
ms.Close();
byte[] buffer = ms.GetBuffer();
此外,如果抛出异常,则不会清理资源。对于实现IDisposable的所有内容,请使用using
关键字。
在写入内存流并将其保存之前,您需要回放内存流
ms.Seek(0, SeekOrigin.Begin);
答案 1 :(得分:0)
这是节省内存
lowercase
MemoryStream ms =新的MemoryStream();
enter code here
pictureBox_ad_cam_in.Image.Save(毫秒,System.Drawing.Imaging.ImageFormat.Jpeg);
enter code here
kanvert = Convert.ToBase64String(ms.ToArray());