ASP.NET生成缩略图的代码
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生成缩略图的代码的更多相关文章
- ThinkPHP5.0图片上传生成缩略图实例代码
很多朋友遇到这样一个问题,图片上传生成缩略图,很多人在本机(win)测试成功,上传到linux 服务器后错误. 我也遇到同样的问题.网上一查,有无数的人说是服务器临时文件目录权限问题. 几经思考后,发 ...
- asp.net生成缩略图
/// <summary> /// 生成缩略图 /// </summary> /// <param name="orginalImagePat"> ...
- asp.net生成缩略图、文字图片水印
/// <summary> /// 会产生graphics异常的PixelFormat /// </summary> private static PixelFormat[] ...
- ASP.NET 生成缩略图片类分享
/// <summary> /// 生成图片缩略图 指定文件路径生成 /// </summary> public static void SaveImage(String fu ...
- 上传图片+生成缩略图 ashx代码
html页面 <form action="Handlers/UploadImageHandler.ashx" method="post" enctype= ...
- ASP组件AspJpeg(加水印)生成缩略图等使用方法
ASP组件AspJpeg(加水印)生成缩略图等使用方法 作者: 字体:[增加 减小] 类型:转载 时间:2012-12-17我要评论 ASPJPEG是一款功能相当强大的图象处理组件,用它可以轻松地做出 ...
- C#生成缩略图不清晰模糊问题的解决方案!
之前网上找了个生成缩略图的代码,改了改直接用了.问题来了,等比例缩略图时总是发现左边.上边的边线大概有一像素的白边,领导不乐意了,那咱就改吧.图片放大了才发现,那个好像是渐变的颜色,晕,这样的功能领导 ...
- asp.net中生成缩略图并添加版权实例代码
这篇文章介绍了asp.net中生成缩略图并添加版权实例代码,有需要的朋友可以参考一下 复制代码代码如下: //定义image类的对象 Drawing.Image image,newimage; //图 ...
- Asp.net mvc 5 CRUD代码自动生成工具- vs.net 2013 Saffolding功能扩展
Asp.net mvc 5 CRUD代码自动生成工具 -Visual Studio.net2013 Saffolding功能扩展 上次做过一个<Asp.net webform scaffoldi ...
随机推荐
- Baseline管理
1.创建基线 SQL> exec dbms_workload_repository.create_baseline(start_snap_id=>,end_snap_id=>,bas ...
- .NET Framework 4 中的并行编程9---线程安全集合类
原文转载自:http://www.cnblogs.com/xray2005/archive/2011/10/11/2206745.html 在.Net 4中,新增System.Collections. ...
- Java基础之创建窗口——创建应用程序窗口(TryWindow)
控制台程序. 准备好应用程序窗口及其包含的组件并显示,这称为实现窗口.调用应用程序窗口对象的setVisible()方法就会实现窗口.实现了应用程序的GUI之后,在主线程中修改或查询GUI可能会导致死 ...
- Java数组(初学者必看)
数组无论在哪种编程语言中都算是最重要的数据结构之一,同时不同语言的实现及处理也不尽相同.但凡写过一些程序的人都知道数组的价值及理解数组的重要性,与链表一道,数组成为了基本的数据结构.尽管Java提供了 ...
- redhat centos yum源的安装
redhat centos yum源的安装 1.除旧 #cd /etc/yum.repos.d #mv rhel-debuginfo.repo rhel-debuginfo.repo.bak 此处将其 ...
- PostgreSQL Partitions
why we need partitions The first and most demanding reason to use partitions in a database is to inc ...
- using gulp
原 荐 gulp构建前端工程 半张一块 发布时间: 2016/07/27 16:22 阅读: 895 收藏: 4 点赞: 4 评论: 2 摘要 Gulp 是一个自动化工具,前端开发者可以使用它来处理常 ...
- 小项目:mini资源管理器【使用IO流:包含(Directory与DirectoryInfo、File与FileInfo的用法)】
主界面是这样的 1.在点击查询引发的事件时把TextBox.Text输入的目录地址加载到TreeList控件里. private void btnSelect_Click(object sender, ...
- smarty简单介绍
smarty简单介绍 示意图如下 简单介绍smarty.class.php类的大体内容,如下: <?php class Smarty //此类就是libs中的Smarty.class.php类 ...
- 白盒测试的学习之路----(四)搭建测试框架TestNG测试
TestNG是一个开源自动化测试框架; TestNG是类似于JUnit,但它不是一个JUnit扩展.它的灵感来源于JUnit.它的目的是优于JUnit的,尤其是当测试集成的类. TestNG消除了大部 ...