• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#生成缩略图不清晰模糊问题的解决方案!

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

//取得图片大小
            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();

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

打完收工!


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
找最大重复次数的数和重复次数(C++Pair)发布时间:2022-07-14
下一篇:
C++之策略模式发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap