笑看山河

导航

 

之前网上找了个生成缩略图的代码,改了改直接用了。问题来了,等比例缩略图时总是发现左边、上边的边线大概有一像素的白边,领导不乐意了,那咱就改吧。图片放大了才发现,那个好像是渐变的颜色,晕,这样的功能领导肯定是接受不了的,图片画质都变了。网上搜了下,解决方案来了,挺多的。我就摘抄下,大家参考下,省的费劲去搜索了!

//取得图片大小
            var destRect = new Size(Convert.ToInt32(w), Convert.ToInt32(h));//指定所绘制图像的位置和大小
            var srcRect = new Size(Convert.ToInt32(sw), Convert.ToInt32(sh));//指定 image 对象中要绘制的部分
            var bitmap = new Bitmap(image, destRect);
            //新建一个画板
            var g = Graphics.FromImage(bitmap);

            //设置高质量插值法
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            //设置高质量,低速度呈现平滑程度
            g.SmoothingMode = SmoothingMode.HighQuality;
            g.CompositingQuality = CompositingQuality.HighQuality;
            //清空一下画布
            g.Clear(Color.White);
            //防止出现渐变
            var imgAtt = new ImageAttributes();
            imgAtt.SetWrapMode(WrapMode.TileFlipXY);
            //在画板的指定位置画图
            g.DrawImage(image, new Rectangle(0, 0, destRect.Width, destRect.Height), x, y, srcRect.Width, srcRect.Height,
                        GraphicsUnit.Pixel, imgAtt);
            //保存高清晰度的缩略图
            bitmap.Save(fileFullPath, GetImageFormat(Path.GetExtension(fileFullPath)));
            g.Dispose();
            bitmap.Dispose();

红色部分就是解决问题的关键所在。

打完收工!

posted on 2013-10-14 11:35  笑看山河  阅读(3538)  评论(0编辑  收藏  举报