Code
 1 /**//// <summary>
 2        /// 生成缩略图
 3        /// </summary>
 4        /// <param name="originalImagePath">源图路径(物理路径)</param>
 5        /// <param name="thumbnailPath">缩略图路径(物理路径)</param>
 6        /// <param name="width">缩略图宽度</param>
 7        /// <param name="height">缩略图高度</param>
 8        /// <param name="mode">生成缩略图的方式</param>    
 9        public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
10        {
11            Image originalImage = Image.FromFile(originalImagePath);
12            
13            int towidth = width;
14            int toheight = height;
15        
16            int x = 0;
17            int y = 0;
18            int ow = originalImage.Width;
19            int oh = originalImage.Height;        
20
21            switch (mode)
22            {        
23                case "HW"://指定高宽缩放(可能变形)                
24                    break;
25                case "W"://指定宽,高按比例                    
26                    toheight = originalImage.Height * width/originalImage.Width;
27                    break;
28                case "H"://指定高,宽按比例
29                    towidth = originalImage.Width * height/originalImage.Height;                    
30                    break;        
31                case "Cut"://指定高宽裁减(不变形)                
32                    if((double)originalImage.Width/(double)originalImage.Height > (double)towidth/(double)toheight)
33                    {
34                        oh = originalImage.Height;
35                        ow = originalImage.Height*towidth/toheight;
36                        y = 0;
37                        x = (originalImage.Width - ow)/2;
38                    }
39                    else
40                    {
41                        ow = originalImage.Width;
42                        oh = originalImage.Width*height/towidth;
43                        x = 0;
44                        y = (originalImage.Height - oh)/2;
45                    }
46                    break;                    
47                default :
48                    break;
49            }    
50            
51            //新建一个bmp图片
52            Image bitmap = new System.Drawing.Bitmap(towidth,toheight);
53
54            //新建一个画板
55            Graphics g = System.Drawing.Graphics.FromImage(bitmap);
56
57            //设置高质量插值法
58            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
59
60            //设置高质量,低速度呈现平滑程度
61            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
62
63            //清空画布并以透明背景色填充
64            g.Clear(Color.Transparent);        
65
66            //在指定位置并且按指定大小绘制原图片的指定部分
67            g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight), 
68                new Rectangle(x, y, ow,oh),
69                GraphicsUnit.Pixel);
70
71            try
72            {            
73                //以jpg格式保存缩略图
74                bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
75            }
76            catch(System.Exception e)
77            {
78                throw e;
79            }
80            finally
81            {
82                originalImage.Dispose();
83                bitmap.Dispose();                        
84                g.Dispose();
85            }
86        }
87

转载于:https://www.cnblogs.com/rainnight/archive/2008/03/23/1118286.html

asp.net生成高质量缩略图通用函数相关推荐

  1. asp.net生成高质量缩略图通用函数(c#代码),支持多种生成方式

    在网站开发时,生成缩略图是一个非常常见和实用的功能.以前在asp里只能借助com组件实现,现在在.net里可以利用框架的强大的类库轻松实现.下面帖出完整的代码(带详细注释),参考了网上的一些文章及.n ...

  2. [导入]ASP.NET生成高质量缩略图通用函数(c#代码)

    网站开发时,生成缩略图是一个非常常见和实用的功能.以前在asp里只能借助com组件实现,现在在.net里可以利用框架的强大的类库轻松实现.下面帖出完整的代码(带详细注释),参考了网上的一些文章及.ne ...

  3. 生成高清缩略图; 添加图片、文字水印; 图片、文字水印透明

    之前写了一个公共的ImgHelper类,主要提供高清晰缩略图生成,由于在之前的实际操作过程中存在一些问题,最近有了点时间,于是重新拾起来再改进一下,顺便研究一下GDI+. 问题一:产品搜索列表展示,每 ...

  4. 无需用户输入,Adobe提出自动生成高质量合成图像新方法

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 没有用户输入,也能生成高质量的合成图像吗? 编辑:迈威AI研习社 ...

  5. 无需用户输入!Adobe提出自动生成高质量合成图像新方法

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 本文转载自:机器之心  |  作者:He Zhang等 编辑:小舟.杜伟 没有用户输入,也能生 ...

  6. 苏黎世大学 AI 新研究:仅用少量样本生成高质量光声图像

    近日,苏黎世联邦理工学院和苏黎世大学的科学家宣布,可以利用机器学习方法来改善光声成像,成果发表在Nature Machine Intelligence上(点击查看论文链接) "光声成像&qu ...

  7. EMNLP 2021 | 大道至简:微软提出可生成高质量文本表示的预训练语言模型

    ©作者 | 常馨 学校 | 北京邮电大学硕士生 研究方向 | NLP.信息检索 Abstract 基于自动编码器的语言模型在 Dense Retrieval(DR)中受到越来越多的关注,因为其训练编码 ...

  8. matlab输出高分辨率图片有白色毛刺,科学网—图片空白边缘处理/统计直方图---matlab/保存生成高质量的清晰图 - 杨小林的博文...

    这里介绍hist函数结合bar函数绘制统计直方图 一组原始采集数据,如:data=[2 3 -4 -1 4 -5 1 5 -2 -3]; 数据范围为range=-5:5; 首先可以采用hist函数进行 ...

  9. 科技最前沿!Adobe提出自动生成高质量合成图像新方法

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器之心 AI博士笔记系列推荐 周志华<机器学习> ...

最新文章

  1. oracle自动化,Oracle 自动化备份脚本
  2. IBM XIV高效存储广受公安、医疗、电信、金融等客户赞誉
  3. java arraylist 构造_Java基础五:构造方法、ArrayList
  4. Java学习笔记33
  5. Git 本地仓库管理
  6. 字符串(0-9和小数点)转为数字--atof,数字转化为字符串--sprintf
  7. Python的os.walk()方法详细讲解
  8. 把字符串每隔四个字符使用“-”中横线分隔的方法
  9. java原子操作cas_java并发编程系列二:原子操作/CAS
  10. ActiveMQ - spring集成jms
  11. Win11延迟高怎么办?Win11延迟高的解决方法
  12. DOM介绍~超好理解的哦
  13. 使用$.getJSON解决ajax跨域访问 JQuery 的跨域方法(服务器端为wordpress程序)
  14. 自定义控件设置宽度_自定义View开篇,必须跨过的一道坎儿
  15. 装饰器模式实现咖啡店(Java代码实例)
  16. comsol圆柱形永磁体_基于COMSOL Multiphysics的磁场仿真分析
  17. (二)买基金的成本知识
  18. Laravel图片合成
  19. Python基础必掌握的文件读写操作详解
  20. 使用中国移动NB-IoT模组M5310-A快速连接到OneNET(LwM2M协议)

热门文章

  1. php xss 实例,php - 关于sql注入和xss的具体实例分析
  2. 文件如何存储c语言,急求如何将下列C语言程序数据存储到文件中?
  3. 消息中间件kafka概述和安装
  4. 数据科学入门与实战:Matplotlib绘图基础一
  5. 我的世界java1如何安装mod_《我的世界》【教程】如何安装MOD【PC】
  6. php点击按钮查询,管理界面点击按钮打开查询功能
  7. mysql三大范式_数据库的三大范式?
  8. mysql数据库常见问题_初学者必读 MySQL数据库常见问题汇总
  9. webbrowser加载地图网页出现脚本错误解决
  10. mysql 自动备份_如何将mysql备份自动存储到minio