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. Baseline管理

    1.创建基线 SQL> exec dbms_workload_repository.create_baseline(start_snap_id=>,end_snap_id=>,bas ...

  2. .NET Framework 4 中的并行编程9---线程安全集合类

    原文转载自:http://www.cnblogs.com/xray2005/archive/2011/10/11/2206745.html 在.Net 4中,新增System.Collections. ...

  3. Java基础之创建窗口——创建应用程序窗口(TryWindow)

    控制台程序. 准备好应用程序窗口及其包含的组件并显示,这称为实现窗口.调用应用程序窗口对象的setVisible()方法就会实现窗口.实现了应用程序的GUI之后,在主线程中修改或查询GUI可能会导致死 ...

  4. Java数组(初学者必看)

    数组无论在哪种编程语言中都算是最重要的数据结构之一,同时不同语言的实现及处理也不尽相同.但凡写过一些程序的人都知道数组的价值及理解数组的重要性,与链表一道,数组成为了基本的数据结构.尽管Java提供了 ...

  5. redhat centos yum源的安装

    redhat centos yum源的安装 1.除旧 #cd /etc/yum.repos.d #mv rhel-debuginfo.repo rhel-debuginfo.repo.bak 此处将其 ...

  6. PostgreSQL Partitions

    why we need partitions The first and most demanding reason to use partitions in a database is to inc ...

  7. using gulp

    原 荐 gulp构建前端工程 半张一块 发布时间: 2016/07/27 16:22 阅读: 895 收藏: 4 点赞: 4 评论: 2 摘要 Gulp 是一个自动化工具,前端开发者可以使用它来处理常 ...

  8. 小项目:mini资源管理器【使用IO流:包含(Directory与DirectoryInfo、File与FileInfo的用法)】

    主界面是这样的 1.在点击查询引发的事件时把TextBox.Text输入的目录地址加载到TreeList控件里. private void btnSelect_Click(object sender, ...

  9. smarty简单介绍

    smarty简单介绍 示意图如下 简单介绍smarty.class.php类的大体内容,如下: <?php class Smarty //此类就是libs中的Smarty.class.php类 ...

  10. 白盒测试的学习之路----(四)搭建测试框架TestNG测试

    TestNG是一个开源自动化测试框架; TestNG是类似于JUnit,但它不是一个JUnit扩展.它的灵感来源于JUnit.它的目的是优于JUnit的,尤其是当测试集成的类. TestNG消除了大部 ...