01.        // <summary>
02.        /// 生成缩略图
03.        /// </summary>
04.        /// <param name="originalImagePath">源图路径</param>
05.        /// <param name="thumbnailPath">缩略图路径</param>
06.        /// <param name="width">缩略图宽度</param>
07.        /// <param name="height">缩略图高度</param>
08.        /// <param name="mode">生成缩略图的方式:HW指定高宽缩放(可能变形);W指定宽,高按比例 H指定高,宽按比例 Cut指定高宽裁减(不变形)</param>  
09.        /// <param name="mode">要缩略图保存的格式(gif,jpg,bmp,png) 为空或未知类型都视为jpg</param>  
10.        public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode, string imageType)
11.        {
12.            Image originalImage = Image.FromFile(originalImagePath);
13.            int towidth = width;
14.            int toheight = height;
15.            int x = 0;
16.            int y = 0;
17.            int ow = originalImage.Width;
18.            int oh = originalImage.Height;
19.20.            switch (mode)
21.            {
22.                case "HW"://指定高宽缩放(可能变形)        
23.                    break;
24.                case "W"://指定宽,高按比例          
25.                    toheight = originalImage.Height * width / originalImage.Width;
26.                    break;
27.                case "H"://指定高,宽按比例
28.                    towidth = originalImage.Width * height / originalImage.Height;
29.                    break;
30.                case "Cut"://指定高宽裁减(不变形)        
31.                    if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
32.                    {
33.                        oh = originalImage.Height;
34.                        ow = originalImage.Height * towidth / toheight;
35.                        y = 0;
36.                        x = (originalImage.Width - ow) / 2;
37.                    }
38.                    else
39.                    {
40.                        ow = originalImage.Width;
41.                        oh = originalImage.Width * height / towidth;
42.                        x = 0;
43.                        y = (originalImage.Height - oh) / 2;
44.                    }
45.                    break;
46.                default:
47.                    break;
48.            }
49.            //新建一个bmp图片
50.            Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
51.52.            //新建一个画板
53.            Graphics g = System.Drawing.Graphics.FromImage(bitmap);
54.55.            //设置高质量插值法
56.            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
57.58.            //设置高质量,低速度呈现平滑程度
59.            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
60.61.            //清空画布并以透明背景色填充
62.            g.Clear(Color.Transparent);
63.64.            //在指定位置并且按指定大小绘制原图片的指定部分
65.            g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),
66.              new Rectangle(x, y, ow, oh),
67.              GraphicsUnit.Pixel);
68.69.            try
70.            {
71.                //以jpg格式保存缩略图
72.                switch (imageType.ToLower())
73.                {
74.                    case "gif":
75.                        bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Gif);
76.                        break;
77.                    case "jpg":
78.                        bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
79.                        break;
80.                    case "bmp":
81.                        bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Bmp);
82.                        break;
83.                    case "png":
84.                        bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Png);
85.                        break;
86.                    default:
87.                        bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
88.                        break;
89.                }
90.            }
91.            catch (System.Exception e)
92.            {
93.                throw e;
94.            }
95.            finally
96.            {
97.                originalImage.Dispose();
98.                bitmap.Dispose();
99.                g.Dispose();
100.            }
101.        }

ASP.NET生成缩略图的代码的更多相关文章

  1. ThinkPHP5.0图片上传生成缩略图实例代码

    很多朋友遇到这样一个问题,图片上传生成缩略图,很多人在本机(win)测试成功,上传到linux 服务器后错误. 我也遇到同样的问题.网上一查,有无数的人说是服务器临时文件目录权限问题. 几经思考后,发 ...

  2. asp.net生成缩略图

    /// <summary> /// 生成缩略图 /// </summary> /// <param name="orginalImagePat"> ...

  3. asp.net生成缩略图、文字图片水印

    /// <summary> /// 会产生graphics异常的PixelFormat /// </summary> private static PixelFormat[] ...

  4. ASP.NET 生成缩略图片类分享

    /// <summary> /// 生成图片缩略图 指定文件路径生成 /// </summary> public static void SaveImage(String fu ...

  5. 上传图片+生成缩略图 ashx代码

    html页面 <form action="Handlers/UploadImageHandler.ashx" method="post" enctype= ...

  6. ASP组件AspJpeg(加水印)生成缩略图等使用方法

    ASP组件AspJpeg(加水印)生成缩略图等使用方法 作者: 字体:[增加 减小] 类型:转载 时间:2012-12-17我要评论 ASPJPEG是一款功能相当强大的图象处理组件,用它可以轻松地做出 ...

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

    之前网上找了个生成缩略图的代码,改了改直接用了.问题来了,等比例缩略图时总是发现左边.上边的边线大概有一像素的白边,领导不乐意了,那咱就改吧.图片放大了才发现,那个好像是渐变的颜色,晕,这样的功能领导 ...

  8. asp.net中生成缩略图并添加版权实例代码

    这篇文章介绍了asp.net中生成缩略图并添加版权实例代码,有需要的朋友可以参考一下 复制代码代码如下: //定义image类的对象 Drawing.Image image,newimage; //图 ...

  9. Asp.net mvc 5 CRUD代码自动生成工具- vs.net 2013 Saffolding功能扩展

    Asp.net mvc 5 CRUD代码自动生成工具 -Visual Studio.net2013 Saffolding功能扩展 上次做过一个<Asp.net webform scaffoldi ...

随机推荐

  1. php基础语法学习汇总

    常量学习: <?php # function demo function sum($x,$y){ $z=$x+$y; return $z; } echo sum(1,2); #define de ...

  2. LaTeX 有哪些「新手须知」的内容?

    孟晨 ,在 LaTeX 话题下写错 LaTeX 名字的,一律… 陈硕等 137 人赞同 这是个好问题,虽然提问提得很大.不是很好答,权当抛砖引玉了. 天字第一号原则:不要到网上抄代码,尤其是似懂非懂的 ...

  3. R语言putty中直接使用X11(Xming)绘图

    1.下载Xming地址 http://pan.baidu.com/s/1o6ilisU,安装,推荐默认安装在C盘,推荐快捷方式放在与putty快捷方式同一个文件夹: 2.打开putty,在SSH的X1 ...

  4. Undefined symbols “_OBJC_CLASS_$_XXX” 问题

    解决方法是点击工程,在targets界面中找到Build Phases,根据提示信息“XXX”来判断缺少什么文件,一般如果缺少自定义的文件,XXX会是缺少的类名,那么就在Complie Sources ...

  5. 01分数规划POJ3621(最优比例生成环)

    Sightseeing Cows Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8218   Accepted: 2756 ...

  6. [原创]java WEB学习笔记87:Hibernate学习之路-- -映射 继承关系(subclass , joined-subclass,union-subclass )

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. C#: 获取当前应用程序所在路径

    ref: http://www.cnblogs.com/netlyf/archive/2011/06/22/2086718.html 一.获取当前文件的路径 string str1=Process.G ...

  8. DMA-330(一)

    DMA Controller的interface: DMA Controller提供这些feature: 1)instruction set,对DMA transfer进行program 2)AXI ...

  9. LDA-math-MCMC 和 Gibbs Sampling

    http://cos.name/2013/01/lda-math-mcmc-and-gibbs-sampling/ 3.1 随机模拟 随机模拟(或者统计模拟)方法有一个很酷的别名是蒙特卡罗方法(Mon ...

  10. libsvm

    代码文件主要针对Matlab进行说明,但个人仍觉得讲解的支持向量机内容非常棒,可以做为理解这一统计方法的辅助资料; LibSVM是台湾林智仁(Chih-Jen Lin)教授2001年开发的一套支持向量 ...