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


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

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

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

    打完收工!

  • 相关阅读:
    群晖下 gitea+drone+harbor实现CI/CD 发布到云服务器
    随便写写
    知行合一
    GO/testing包
    进程切换时是如何保存上下文的
    语言
    printf缓冲区踩坑
    Spring 中 @EnableXXX 注解的套路
    分享一个工业现场常用的运动控制案例
    数据库之App.config配置文件错误
  • 原文地址:https://www.cnblogs.com/rober0371/p/3368079.html
Copyright © 2020-2023  润新知