一、问题场景

针对一张正方形图片生成 48px × 48px 的缩略图并保存为图片文件,但发现生成的缩略图很模糊。

生成的模糊的缩略图如下:

原始图片(300px × 300px, png格式):

代码中调用的是 System.Drawing.Image. GetThumbnailImage() 方法,主要实现代码如下:

private void SaveThumbnail(Bitmap bitmap, int width, int height, string directory, string filename, string extension)
{var physicalPath = directory + filename + extension;using (var thumbnail = bitmap.GetThumbnailImage(width, height, () => { return true; }, IntPtr.Zero)){using (var encoderParameters = new EncoderParameters(1)){encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 100L);thumbnail.Save(physicalPath,ImageCodecInfo.GetImageEncoders().Where(x => x.FilenameExtension.Contains(extension.ToUpperInvariant())).FirstOrDefault(),encoderParameters);}}
}

二、解决方法

改为调用 System.Drawing.Graphics.DrawImage() 方法, 主要实现代码如下:

private void SaveThumbnail(Bitmap originBitmap, int width, int height, string directory, string filename, string extension)
{var physicalPath = directory + filename + extension;using (var newImage = new Bitmap(width, height)){using (var graphic = GetGraphic(originBitmap, newImage)){graphic.DrawImage(originBitmap, 0, 0, width, height);using (var encoderParameters = new EncoderParameters(1)){encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 100L);newImage.Save(physicalPath,ImageCodecInfo.GetImageEncoders().Where(x => x.FilenameExtension.Contains(extension.ToUpperInvariant())).FirstOrDefault(),encoderParameters);}}}
}private Graphics GetGraphic(Image originImage, Bitmap newImage)
{newImage.SetResolution(originImage.HorizontalResolution, originImage.VerticalResolution);var graphic = Graphics.FromImage(newImage);graphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;graphic.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;graphic.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;graphic.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;return graphic;
}

生成的缩略图效果如下:

三、参考资料

Cropping image using jQuery, Jcrop and ASP.NET

Resizing an Image without losing any quality

转载于:https://www.cnblogs.com/dudu/archive/2013/01/16/resize-image.html

[C#]解决生成的缩略图模糊的问题相关推荐

  1. vue实现pdf导出,解决生成canvas模糊等问题

    vue实现pdf导出,解决生成canvas模糊等问题 参考文章: (1)vue实现pdf导出,解决生成canvas模糊等问题 (2)https://www.cnblogs.com/jsonYoung/ ...

  2. php 图片剪切为透明,解决PHP剪切缩略图生成png,gif透明图时,黑色背景有关问题...

    解决PHP剪切缩略图生成png,gif透明图时,黑色背景问题 最近做头像上传用到剪切,只要GIF或者PNG是透明的话,剪切后都会变成黑色的背景图. ? 解决方案有2种: ? 1.背景图填充白色的背景. ...

  3. c#.net 生成清晰缩略图的解决方案

    Bitmap类的GetThumbnailImage方法可以从指定的图像文件中生成缩略图,但是这种方式生成的缩略图清晰度不稳定,有时生成的缩略图的质量很差--模糊不清! 为什么会这样?为什么生成的图片是 ...

  4. nginx+lua+GraphicsMagick生成实时缩略图-CentOS7

    背景说明 大多数的系统都会涉及缩略图的处理,比如新闻系统和电商系统,特别是电商系统,每个商品大图都会对应一系列尺寸的缩略图用于不同业务场景的使用.部分系统也会生成不同尺寸的缩略图以供PC.手机端.ip ...

  5. 【下载源码】在线生成网页缩略图.超越Snap.com:WebSnap Beta 1.1 发布。感谢博客园的“萧寒”重写的底层。开源。

    [下载源码]在线生成网页缩略图.超越Snap.com:WebSnap Beta 1.1 发布.感谢博客园的"萧寒"重写的底层.开源. DEMO网址:http://www.365rs ...

  6. php imagick 取得psd缩略图,PHP利用imagick读取PDF生成png缩略图的两种方法

    PHP利用imagick读取PDF生成png缩略图的两种方法 发表于2019-04-24 06:08| 次阅读| 来源网络整理| 作者session 摘要:PHP利用imagick读取PDF生成png ...

  7. 利用FFmpeg生成视频缩略图 2.1.8

    1.下载FFmpeg文件包,解压包里的\bin\下的文件解压到 D:\ffmpeg\ 目录下.下载地址 http://ffmpeg.zeranoe.com/builds/win32/static/D: ...

  8. php生成网页缩略图接口,php生成网站缩略图

    我要明确的回答使用php生成网站缩略图是不可能完成的任务. 那为什么我标题还要用"php生成网站缩略图",那是因为我们可以用php作为接口,通过页面传入参数来调用后台生成网页的缩略 ...

  9. 解决了MovieClip缩略图问题

    刚刚已经解决了MovieClip缩略图问题,下面是我的截图: 下面红色部分是我实现缩略图的修改和添加的关键代码. 修改Pages.mxml 修改添加: private function createP ...

最新文章

  1. trogan连接不上_解决连接不上网(Connection not connected).doc
  2. [OS复习]设备管理4
  3. 关于ubuntu对有线网卡I219-V和无线网卡RTL8723DE 802.11b/g/n的支持问题
  4. 【转】有限状态机(FSM)学习总结C#
  5. 不使用自带函数求区域的周长_Excel表格中最强大求和函数______DSUM函数
  6. 计算机系统由低到高分层,下列选项列出计算机系统由低到高分层顺序中.doc
  7. InnoDB与Myisam的六大区别
  8. 8Manage助力花安堂打造新品研发项目管理平台
  9. Day704.Tomcat内存溢出的原因分析及调优 -深入拆解 Tomcat Jetty
  10. JavaWeb新闻发布系统案例4
  11. ios功耗测试软件,iOS 性能优化 Instruments 检测 App 耗电量实战
  12. 2022-06-清华管理学-清华大学-宁向东
  13. Android初级教程调用手机拍照与摄像功能
  14. Python Socket传输图片
  15. 手机邮箱怎么弄_我的手机邮箱怎么设置
  16. 作为一名视觉工程师该怎么学习?
  17. ZOJ 3810 A Volcanic Island(四色定理模板)
  18. SQL数据库基础知识巩固
  19. 关于ACCESS数据库版本问题
  20. 洛谷:P2525 Uim的情人节礼物·其之壱

热门文章

  1. 关于jspsmartupload中的各种问题
  2. 03-MySQL多表操作
  3. [UWP]了解模板化控件(7):支持Command
  4. java性能优化方案4——不要调用高开销方法
  5. DAG添加第二台主机报超时
  6. java异常处理之throw, throws,try和catch
  7. 搭建Cocos Code IDE开发环境
  8. Android Scroller简单用法
  9. 【C语言】简单C编程题-同位相同的N项之和/标准输入花括号成对判断/行号行输出...
  10. Unity 播放音频文件