0

我有一些 c# 代码从网页获取图像,然后将其下载到我的本地计算机。这是在后台以 1/秒的速度完成的。如果我让这个运行正常,我的图片会正确更新。这些图片基本上是来自相机的馈送。我想将这些图片放入图片框或其他控件中,这样我就可以将图像显示为相机源。但是,当我尝试这样做时,我遇到错误说正在使用该图像,因此我无法将其加载到我的图片框中。有一个更好的方法吗?

谢谢,

 byte[] lnBuffer;
                    byte[] lnFile;

                    HttpWebRequest lxRequest = (HttpWebRequest)WebRequest.Create(uri);

                    lxRequest.Credentials = credentials;
                    using (HttpWebResponse lxResponse = (HttpWebResponse)lxRequest.GetResponse())
                    {

                        using (BinaryReader lxBR = new BinaryReader(lxResponse.GetResponseStream()))
                        {
                            using (MemoryStream lxMS = new MemoryStream())
                            {
                                lnBuffer = lxBR.ReadBytes(1024);
                                while (lnBuffer.Length > 0)
                                {
                                    lxMS.Write(lnBuffer, 0, lnBuffer.Length);
                                    lnBuffer = lxBR.ReadBytes(1024);
                                }
                                lnFile = new byte[(int)lxMS.Length];
                                lxMS.Position = 0;
                                lxMS.Read(lnFile, 0, lnFile.Length);
                                lxMS.Close();
                                lxBR.Close();
                            }
                        }
                        lxResponse.Close();
                    }






                            using (System.IO.FileStream lxFS = new FileStream("images/camppic1.jpg", FileMode.Create))
                            {
                                lxFS.Write(lnFile, 0, lnFile.Length);
                                lxFS.Close();




                            }

这是我用来创建文件的。然后在此代码之后以相同的方法执行此操作:

image = Image.FromFile("C:\camppic1.jpg");

              pictureBox23.Image = image;
4

1 回答 1

0

如果您需要该文件,则加载文件内容并复制到 MemoryStream 并使用Image.FromStream。如果您不需要该文件,则可以跳过它并直接从下载中使用 MemoryStream ...(更快,因为不需要访问磁盘。)

于 2012-05-17T19:04:08.103 回答