从本地计算机重复加载图片框控件中的图像

本文关键字:控件 图像 加载 计算机 | 更新日期: 2023-09-27 18:34:34

>我有一些 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;

从本地计算机重复加载图片框控件中的图像

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