从本地机器反复在图片框控件中加载图像

时间:2012-05-17 16:17:14

标签: c#

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

谢谢,

 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;

1 个答案:

答案 0 :(得分:0)

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