方法一:通过调用Image对象的自带方法GetThumbnailImage()进行图片转换。

  1. /// <summary>
  2. /// 生成缩略图重载方法,返回缩略图的Image对象
  3. /// </summary>
  4. /// <param name="width">缩略图的宽度</param>
  5. /// <param name="height">缩略图的高度</param>
  6. /// <param name="imageFrom">原Image对象</param>
  7. /// <returns>缩略图的Image对象</returns>
  8. public Image GetReducedImage(int width, int height, Image image)
  9. {
  10. // 源图宽度及高度
  11. int imageWidth = image.Width;
  12. int imageHeight = image.Height;
  13. try
  14. {
  15. // 生成的缩略图实际宽度及高度.如果指定的高和宽比原图大,则返回原图;否则按照指定高宽生成图片
  16. if (width >= imageWidth && height >= imageHeight)
  17. {
  18. return image;
  19. }
  20. else
  21. {
  22. Image.GetThumbnailImageAbort getTIA = () =>false;
  23. //调用Image对象自带的GetThumbnailImage()进行图片缩略
  24. Image reducedImage = imageFrom.GetThumbnailImage(width, height, getTIA, IntPtr.Zero);
  25. //将图片以指定的格式保存到到指定的位置
  26. reducedImage.Save(@"路径名+文件名(包括扩展名,并于下一个参数相一致)", ImageFormat.Png);
  27. return reducedImage;
  28. }
  29. }
  30. catch (Exception)
  31. {
  32. //抛出异常
  33. throw new Exception("转换失败,请重试!");
  34. }
  35. }

方法二:采用双三次插值法,执行预筛选以确保高质量的收缩,此模式可产生质量教高的转换图像。(使用Graphics来重新绘制)

  1. /// <summary>
  2. /// 按照指定的高和宽生成相应的规格的图片,采用此方法生成的缩略图片不会失真
  3. /// </summary>
  4. /// <param name="width">指定宽度</param>
  5. /// <param name="height">指定高度</param>
  6. /// <param name="imageFrom">原图片</param>
  7. /// <returns>返回新生成的图</returns>
  8. public static Image GetReducedImage(int width, int height, Image image)
  9. {
  10. // 源图宽度及高度
  11. int imageWidth = image.Width;
  12. int imageHeight = image.Height;
  13.  
  14. // 生成的缩略图实际宽度及高度.如果指定的高和宽比原图大,则返回原图;否则按照指定高宽生成图片
  15. if (width >= imageWidth && height >= imageHeight)
  16. {
  17. return image;
  18. }
  19. else
  20. {
  21. // 生成的缩略图在上述"画布"上的位置
  22. int X = ;
  23. int Y = ;
  24. // 创建画布
  25. Bitmap bmp = new Bitmap(width, height, PixelFormat.Format24bppRgb);
  26. bmp.SetResolution(imageFrom.HorizontalResolution, imageFrom.VerticalResolution);
  27. using (Graphics g = Graphics.FromImage(bmp))
  28. {
  29. // 用白色清空
  30. g.Clear(Color.White);
  31. // 指定高质量的双三次插值法。执行预筛选以确保高质量的收缩。此模式可产生质量最高的转换图像。
  32. g.InterpolationMode = InterpolationMode.HighQualityBicubic;
  33.  
  34. // 指定高质量、低速度呈现。
  35. g.SmoothingMode = SmoothingMode.HighQuality;
  36.  
  37. // 在指定位置并且按指定大小绘制指定的 Image 的指定部分。
  38. g.DrawImage(image, new Rectangle(X, Y, width, height),
  39. new Rectangle(, , imageWidth, imageHeight), GraphicsUnit.Pixel);
  40.  
  41. //将图片以指定的格式保存到到指定的位置
  42. bmp.Save(@"路径名+文件名(包括扩展名,并于下一个参数一致)", ImageFormat.Png);
  43. return bmp;
  44. }
  45. }
  46. }

Image 缩略图的更多相关文章

  1. PHP-生成缩略图和添加水印图-学习笔记

    1.开始 在网站上传图片过程,经常用到缩略图功能.这里我自己写了一个图片处理的Image类,能生成缩略图,并且可以添加水印图. 2.如何生成缩略图 生成缩略图,关键的是如何计算缩放比率. 这里,我根据 ...

  2. 最新 去掉 Chrome 新标签页的8个缩略图

    chrome的新标签页的8个缩略图实在让人不爽,网上找了一些去掉这个略缩图的方法,其中很多已经失效.不过其中一个插件虽然按照原来的方法已经不能用了,但是稍微变通一下仍然是可以用的(本方法于2017.1 ...

  3. 纯JS打造比QQ空间更强大的图片浏览器-支持拖拽、缩放、过滤、缩略图等

    在线演示地址(打开网页后,点击商家图册): http://www.sport7.cn/cc/jiangnan/football5.html 先看一看效果图: 该图片浏览器实现的功能如下: 1. 鼠标滚 ...

  4. C# webform上传图片并生成缩略图

    其实里面写的很乱,包括修改文件名什么的都没有仔细去写,主要是想记录下缩略图生成的几种方式 ,大家明白就好! void UpImgs() { if (FileUpload1.HasFile) { str ...

  5. 强大的flash头像上传插件(支持旋转、拖拽、剪裁、生成缩略图等)

    今天介绍的这款flash上传头像功能非常强大,支持php,asp,jsp,asp.net 调用 头像剪裁,预览组件插件. 本组件需要安装Flash Player后才可使用,请从http://dl.pc ...

  6. 获取文件的缩略图Thumbnail和通过 AQS - Advanced Query Syntax 搜索本地文件

    演示如何获取文件的缩略图 FileSystem/ThumbnailAccess.xaml <Page x:Class="XamlDemo.FileSystem.ThumbnailAcc ...

  7. 帝国cms内容页调用缩略图的原始尺寸图片

    在发布文章上传标题图片时,勾选"生成缩略图",将生成原图和对应的缩略图 原图的链接为[!--titlepic--]:/d/file/anlizhanshi/2016-11-25/8 ...

  8. VS2013开启滚动条缩略图和双击选中高亮,效果杠杠滴!

    1.双击代码或选中代码高亮,用以下插件,反应很灵敏,我安装的是第三个 2.代码编辑器的滚动条缩略图是VS自带的,需要打开菜单----工具----选项,如下图设置: 3.VS默认的选中颜色,需要打开菜单 ...

  9. 毫秒级的时间处理上G的图片(生成缩略图)

    测试环境: 测试图片(30M): 测试计时方法: Stopwatch sw1 = new Stopwatch(); sw1.Start(); //TODO...... sw1.Stop(); stri ...

  10. Asp.Net 上传图片并生成高清晰缩略图

    在asp.net中,上传图片功能或者是常用的,生成缩略图也是常用的.baidu或者google,c#的方法也是很多的,但是一用却发现缩略图不清晰啊,缩略图片太大之类的事情,下面是我在处理图片上的代码, ...

随机推荐

  1. JS获取当前完整的url地址以及参数的方法

    javascript 获取当前 URL 参数的两种方法: //返回的是字符串形式的参数,例如:class_id=3&id=2& function getUrlArgStr(){ var ...

  2. DRF Django REST framework APIView(一)

    什么是REST? REST是一个标准,一种规范,遵循REST风格可以使开发的接口通用,便于调用者理解接口的作用. 使url更容易理解,让增删改清晰易懂,在前后端分离开发中按照这一规范能加快开发效率,减 ...

  3. Pandas学习(一)——数据的导入

    欢迎加入python学习交流群 667279387 学习笔记汇总 Pandas学习(一)–数据的导入 pandas学习(二)–双色球数据分析 pandas学习(三)–NAB球员薪资分析 pandas学 ...

  4. CSS_跳动的心

    详细教程CSS3 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...

  5. CSS_实现京东购物车静态页面

    主页面分配: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...

  6. 2019 ICPC上海网络赛 A 题 Lightning Routing I (动态维护树的直径)

    题目: 给定一棵树, 带边权. 现在有2种操作: 1.修改第i条边的权值. 2.询问u到其他一个任意点的最大距离是多少. 题解: 树的直径可以通过两次 dfs() 的方法求得.换句话说,到任意点最远的 ...

  7. CodeForces 607B zuma

    Genos recently installed the game Zuma on his phone. In Zuma there exists a line of n gemstones, the ...

  8. 笔记||Python3之字典

    字典的定义与特性: 字典的每个键值key ==> value 对用冒号:分割,每个键值对之间用逗号分割,整个字典包括在花括号{}中. 字典名 = {键名1:值1, 键名2:值2} 如:dict ...

  9. 使用iCamera 测试MT9F002 1400w高分辨率摄像头小结 之!!看清细节!!!

    使用iCamera 测试MT9F002 1400w高分辨率摄像头小结 之!!看清细节!!! 本方案测试两种种分辨率输出(其他更多分辨率设置,可以参考手册配置) 4608*3288=1515万像素 11 ...

  10. 【HTTP】402- 深入理解http2.0协议,看这篇就够了!

    本文字数:3825字 预计阅读时间:20分钟 导读 http2.0是一种安全高效的下一代http传输协议.安全是因为http2.0建立在https协议的基础上,高效是因为它是通过二进制分帧来进行数据传 ...