我改成下面的代码,上面的内存不足没有了,结果在
 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 新图保存路径;
        }

解决方案 »

  1.   

    还是一块一块的绘制上去吧,不要一下就创建那么大的位图,可能没有足够或连续空间分配像素点的数组,数组太大
      

  2.   

    你试试能不能先把你的原图保存为1/4大小,然后再从这张保存后的图中加载进来。
      

  3.   

    问题已解决。采用分块复制法。 
      

  4.   

    怎么分块复制,能不能发一份给我看下,最近也遇到这样的问题,多谢了。