永发信息网

C# WinForm 循环加载图片出现内存不足

答案:3  悬赏:40  手机版
解决时间 2021-02-06 01:33
C# WinForm 循环加载图片出现内存不足
最佳答案
那用gc.Collect()回收一下看看。
你再注意下这行代码:
Image img = new Bitmap(Image.FromFile(s));

换成Bitmap bmp = new Bitmap(s);
估计就没问题了。追问感谢:youngking87 换成Bitmap bmp = new Bitmap(s);是可以历遍完 listBox1.Items 。
但我需要将Bitmap 转换成Image
用 Image img = Image .GetThumbnailImage(x, y, null, new IntPtr());这样缩小图片
历编第一个转换就出现内存不足了。 我在后面加上 gc.Collect(); 也没用。因为在历遍中第一个转换就提示内存不足了。我的历编是加一个,就转换一个,然后再释放一个。这样循环历遍的。追答嗯,可以啊。那下面再释放img。就好了。
全部回答
首先i=i++;就是不对的。
再者你的图片多大啊,27张就用了1.5g的内存。追问i=i++; 这个地方是次要的,只是为了记录历遍了多少次。
每张图片有4M左右。都是用专业相机照的相片,50张是用来测试的了,我的服务器有上差不多一万张。对存储需求非上大。所以要写个程序去批量缩小图片象素。不需要这么专业高清的图片,单张的图片我实现了。但批量的处理时就不行了,提示内存不足。后来我一步步排除。发现单单就是历编加载图片,然后立即释放资源都提示内存不足。追答你可以看看这部分代码,对比一下哪里不对。
Bitmap bt = new Bitmap(120, 120); //创建Bitmap实例
Graphics g = Graphics.FromImage(bt); //创建Graphics实例
g.Clear(Color.White); //设置画布背景颜色为白色
Image ReducedImage; //缩略图
Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback);
ImageWidth = Convert.ToInt32(ResourceImage.Width * Percent); //设置宽度
ImageHeight = Convert.ToInt32(ResourceImage.Height * Percent); //设置高度
//获取所谓图
ReducedImage = ResourceImage.GetThumbnailImage(ImageWidth, ImageHeight, callb, IntPtr.Zero);
if (ImageWidth > ImageHeight) //如果原图宽度大于高度
{
//缩放图片
g.DrawImage(ReducedImage, 0, (int)(120 - ImageHeight) / 2, ImageWidth, ImageHeight);
}
else
{
g.DrawImage(ReducedImage, (int)(120 - ImageWidth) / 2, 0, ImageWidth, ImageHeight);
}
g.DrawRectangle(new Pen(Color.Gray), 0, 0, 119, 119); //绘制缩略图的边框
bt.Save(@targetFilePath, ImageFormat.Jpeg); //保存缩略图
bt.Dispose(); //释放对象
ReducedImage.Dispose(); //释放对象
return true;追问谢谢!找到原因了。总结一下给大伙们参考参考。在微软官网上看到段解释。Bitmap 一个 图像对象从一个文件构造时该文件仍保留锁定对象的生存期。所以关键是要使用 Graphics.DrawImage() 方法来将映像复制到新位图对象。然后Bitmap和Graphics就可以释放了。然后用新位图进行缩减像素处理,保存后再释放。我新建一个线程来历遍处理较果比较好。我批量处理了12660张图片。程序的运行内存都只是在2M至8M间跳动。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我的新山地车骑得速度快的时候会出现一种像风
博生能美容美体地址在什么地方,想过去办事
【11-66千伏的高压线在多少米范围内的电磁辐
三乡交通银行有几个在哪?
人体舒适度指数的简介
YY主播苏三之前主播的时候用电音唱的一首歌里
天一五金灯饰城地址在哪,我要去那里办事
骣马的意思是什么啊?知道的请说下!
酷美汽车装饰美容中心怎么去啊,我要去那办事
启蒙运动是欧洲历史上的又一次伟大的运动。它
阿福鱼头馆地址在什么地方,想过去办事
我还有一个顺治通宝 背面日月 和两个像大象一
有日本种子,带剧情和中文字幕的吗?有分!!
求大神帮我把图片美化一下。把发型化个时尚的
佳颜美容美体中心地址在什么地方,我要处理点
推荐资讯
Excel 如何避免合并单元格时弹出消息框
三友五金装潢店怎么去啊,我要去那办事
南寨幼儿园(柳州三江侗族自治县)地址好找么,
微商照片怎么拍
柳江县盛达汽车修理厂地址在什么地方,想过去
锡华商务酒店-桌球室地址在什么地方,想过去
一品商务宾馆(宜春袁州)怎么去啊,我要去那办
风林域网吧怎么去啊,我要去那办事
长沙液位控制设备厂我想知道这个在什么地方
停车场(玉箫路)(旭阳路西150米停车场)地址在
东风日产DFL7168MAL4是轩逸还是天籁
阿呀呀·七色花在什么地方啊,我要过去处理事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?