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 ...
随机推荐
- mysql:键缓存
myisam的主要优化参数: key_buffer_size - 这对MyISAM表来说非常重要,是用来设置整个MySQL中常规Key Cache的大小.一般来说,如果MySQL运行在32位平台,此值 ...
- SqlServer2008根据现有表,获取该表的分区创建脚本
*============================================================== 名称: [GetMSSQLTableScript] 功能: 获取cust ...
- mysql 插入重复值 INSERT ... ON DUPLICATE KEY UPDATE
向数据库插入记录时,有时会有这种需求,当符合某种条件的数据存在时,去修改它,不存在时,则新增,也就是saveOrUpdate操作.这种控制可以放在业务层,也可以放在数据库层,大多数数据库都支持这种需求 ...
- pg_stat_statements
Functions pg_stat_statements_reset() returns void pg_stat_statements_reset discards all statistics g ...
- Lintcode: Expression Evaluation (Basic Calculator III)
Given an expression string array, return the final result of this expression Have you met this quest ...
- 转:python webdriver API 之下拉框处理
下拉框也是 web 页面上非常常见的功能,webdriver 对于一般的下拉框处理起来也相当简单,要想定位下拉框中的内容,首先需要定位到下拉框:这样的二次定位,我们在前面的例子中已经有过使用,下面通过 ...
- poj: 1207
好吧这题竟然还有先大后小的可能,能不这么恶心下吗.. #include <iostream> #include <stdio.h> #include <string.h& ...
- 数组有没有length()这个方法? String有没有length()这个方法?
答:数组和string都没有Length()方法,只有Length属性.
- 夺命雷公狗---微信开发13----获取access_token
获得Access Token的方法1: 这里可以手动进行修改: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential ...
- 为archlinux配置cron
cron的作用:cron可以用来周期性地自动执行一些命令. cron的实现:cron有很多实现版本,例如:cronie, dcron, fcron, bcron, vixie-cron,我安装的是 c ...