我用C#想把65M大小的jpg文件变小,但在C#中出现内存不足错误提示,如何解决

ymk 2013-05-02 01:33:46


string ss = "d:\\PD303(1).jpg"; 这个图像有65M大小

public static string 图像减小(ss)
{
System.IO.FileInfo ff = new FileInfo(原图文件路径);
string 新图保存路径 = 原图文件路径.Replace(ff.Name, "_" + ff.Name);
System.Drawing.Bitmap 原图 = new System.Drawing.Bitmap(原图文件路径);
System.Drawing.Bitmap 新图 = new System.Drawing.Bitmap(原图.Width , 原图.Height );
在这一句提示“内存不足”
......
}
...全文
175 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lizhijan 2014-08-27
  • 打赏
  • 举报
回复
怎么分块复制,能不能发一份给我看下,最近也遇到这样的问题,多谢了。
ymk 2013-05-06
  • 打赏
  • 举报
回复
问题已解决。采用分块复制法。
juezhao007 2013-05-02
  • 打赏
  • 举报
回复
你试试能不能先把你的原图保存为1/4大小,然后再从这张保存后的图中加载进来。
bdmh 2013-05-02
  • 打赏
  • 举报
回复
还是一块一块的绘制上去吧,不要一下就创建那么大的位图,可能没有足够或连续空间分配像素点的数组,数组太大
ymk 2013-05-02
  • 打赏
  • 举报
回复
我改成下面的代码,上面的内存不足没有了,结果在 g.DrawImage(原图, rect); 这一句又出现内存不足。 string ss = "d:\\PD303(1).jpg"; public static string 图像减小(String 原图文件路径) { System.IO.FileInfo ff = new FileInfo(原图文件路径); string 新图保存路径 = 原图文件路径.Replace(ff.Name, "缩减_" + ff.Name);//旋转后保存文件的绝对路径 System.Drawing.Bitmap 原图 = new System.Drawing.Bitmap(原图文件路径); System.Drawing.Bitmap 新图 = new System.Drawing.Bitmap(原图.Width/4 , 原图.Height/4 ); System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(新图);//画新图,即剪裁后的图 System.Drawing.Rectangle rect = new System.Drawing.Rectangle(0, 0, 新图.Width, 新图.Height ); g.DrawImage(原图, rect); g.ResetTransform(); g.Save(); g.Dispose(); 新图.Save(新图保存路径, System.Drawing.Imaging.ImageFormat.Jpeg); return 新图保存路径; }

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧