首页 新闻 会员 周边

C# 利用GDI缩放图片时,尺寸太大出现内存不足该怎么处理

0
悬赏园豆:50 [已关闭问题] 关闭于 2014-04-12 18:31

需要对图片取缩略图,图片尺寸是10200*14028 ,利用graphics处理总是失败,提示内存不足,有没有其他的方法啊?
代码如下,求大神解救啊:

string outFileName = FileSystem.ConvertPathFrom + "temp.jpg";

            System.Drawing.Image img = System.Drawing.Image.FromFile(filename);

            int w, h;
            if (img.Width > 5000 || img.Height > 5000)
            {
                w = img.Width / 10;
                h = img.Height / 10;
            }
            else
            {
                w = img.Width;
                h = img.Height;
            }

            System.Drawing.Bitmap bmSave = new System.Drawing.Bitmap(w, h);     //用于保存图片的位图对象

            System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmSave);
            g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighSpeed;
            System.Drawing.Rectangle rDes = new System.Drawing.Rectangle(0, 0, w, h);
            System.Drawing.Rectangle rScr = new System.Drawing.Rectangle(0, 0, img.Width, img.Height);
            g.DrawImage(img, r, r, System.Drawing.GraphicsUnit.Pixel);

            bmSave.Save(outFileName, System.Drawing.Imaging.ImageFormat.Jpeg);

            filename = outFileName;

            g.Dispose();
            bmSave.Dispose();
            img.Dispose();
zouzouol的主页 zouzouol | 初学一级 | 园豆:156
提问于:2014-04-11 18:42
< >
分享
所有回答(2)
0

你的程序是32位的吧,最大内存只有1个多G,改成64位的就可以了。

天方 | 园豆:5407 (大侠五级) | 2014-04-12 13:10

这不合适吧。。。是不是.net限制了

支持(0) 反对(0) zouzouol | 园豆:156 (初学一级) | 2014-04-12 18:22

@zouzouol: 

不是.net的限制,这个是windows的限制。 其它语言写的32位程序一样只能占1G多点的内存。

支持(0) 反对(0) 天方 | 园豆:5407 (大侠五级) | 2014-04-12 22:12
0

没有找到方法,只能先用图片编辑软件把图片尺寸变小了

zouzouol | 园豆:156 (初学一级) | 2014-04-12 18:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册