日期:2014-05-17  浏览次数:20678 次

.net Graphics 生成的图片文件非常大,如何解决这一问题?
我用.net 的Graphics 做裁剪图片的功能,发现.net生成出来的图片比我的原始图片大小大了5倍左右(原始图片129kb,高宽:1003*600;生成的图片764kb,高宽:1003*600)。

之前还不清楚为什么网页的图片加载很慢,后来认真一看,原来图片大小已经扩大了好多倍。

请高人指点,.net如何处理图片裁剪,既能不影响图片质量,又能保证生成图片大小?

源代码是这样的:


          System.Drawing.Image originalImage = System.Drawing.Image.FromFile(imgPath);

            //新建一个bmp图片
            System.Drawing.Image bitmap = new System.Drawing.Bitmap(thumWidth, thumHeight);

            //新建一个画板
            System.Drawing.Graphics graphic = System.Drawing.Graphics.FromImage(bitmap);

            //设置高质量查值法
            graphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;

            //设置高质量,低速度呈现平滑程度
            graphic.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

            //清空画布并以透明背景色填充
            graphic.Clear(System.Drawing.Color.Transparent);

            //在指定位置并且按指定大小绘制原图片的指定部分
            graphic.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, thumWidth, thumHeight), new System.Drawing.Rectangle(x, y, originalWidth, originalHeight), System.Drawing.GraphicsUnit.Pixel);

            //开始返回图片
            System.IO.MemoryStream ms = new System.IO.MemoryStream();

            bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);


            try
            {
                bitmap.Save(newname);
            }
            catch { }



            originalImage.Dispose();
            bitmap.Dispose();
            graphic.Dispose();