.net Compact Framework 2.0-下载映像时出现内存不足异常

本文关键字:内存不足 异常 映像 下载 Compact Framework net | 更新日期: 2023-09-27 18:20:59

Im正在使用c#.net CF 2.0为Symbol MC75A创建软件。我们扫描条形码,它会返回库存信息,但我正在尝试添加一个从url获取图像的功能。每次扫描都会使用数据库中的新数据刷新屏幕,并从新url中获取图像。它扫描了几个条形码,并返回了可能4/5个图像而没有问题,然后突然发生了OutOfMemoryException。我用来获取图像的代码是:

        public Bitmap GetImage(string URL)
    {
        HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(URL);
        myRequest.Method = "GET";
        myRequest.AllowWriteStreamBuffering = false;

        HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
        System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(myResponse.GetResponseStream());
            myResponse.Close();

            return bmp;
    }

调用方:

                        pbImage.Image = GetImage(ProductImage);
                    pbImage.SizeMode = PictureBoxSizeMode.StretchImage;

在每次使用pbImage.image.dispose()进行新的GET之前,我都尝试过处理图像,但仍然得到了相同的异常。图像大小介于100KB和550KB之间。无论有没有区别,图像的每侧大小总是超过1000像素。

我是不是错过了在重新获取之前进行处理的正确方法,还是以某种方式缓存了所有这些图像,然后创建了内存外异常?

.net Compact Framework 2.0-下载映像时出现内存不足异常

我在这里找到了我的解决方案:

OutOfMemoryException使用Compact Framework 将大图像加载到位图对象

这似乎是系统。当解压缩2000px的图像时,它会创建一个未压缩的图像,在内存中给出更大的大小,这是个例外。该解决方案显示了一种获得图像缩略图而不是整个图像的方法。

再次感谢你的帮助。

以防有人可以访问图像位置。对我来说,更好的方法是创建一个名为resize.aspx的网页,并用图像文件名作为参数从页面填充图片框。现在,该页面(位于服务器上与图像相同的位置)能够调整图像大小并返回一个300x300px的小图像。这似乎是我能想到的最好的解决方案。如果您将图像的完整url传递到另一个页面,并且该页面返回所需的缩略图,则这也适用于任何url的图像。