在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
之前网上找了个生成缩略图的代码,改了改直接用了。问题来了,等比例缩略图时总是发现左边、上边的边线大概有一像素的白边,领导不乐意了,那咱就改吧。图片放大了才发现,那个好像是渐变的颜色,晕,这样的功能领导肯定是接受不了的,图片画质都变了。网上搜了下,解决方案来了,挺多的。我就摘抄下,大家参考下,省的费劲去搜索了! //取得图片大小 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(); 红色部分就是解决问题的关键所在。 打完收工! |
请发表评论