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 ...
随机推荐
- NSDictionary
// ------------------------------字典------------------------------------------------- NSDictionary *d ...
- 【Linux】 JDK安装及配置 (tar.gz版)
安装环境 Linux(Ubuntu 版) JDK安装 tar.gz为解压后就可以使用的版本,这里我将使用jdk-8u65-linux-x64.tar.gz版,安装到/usr/java/下 步骤一 将文 ...
- application 统计网站访问人数
参考书<JSP Web 开发案例教程> index.jsp welcome.jsp 显示
- CSS3 auto revolution practitioner!
1.html <!DOCTYPE html> <html> <head> <title></title> <meta charset= ...
- escape()、encodeURI()、encodeURIComponent() difference
escape() 方法: 采用ISO Latin字符集对指定的字符串进行编码.所有的空格符.标点符号.特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编 ...
- Python学习笔记总结1:字符串表示str与repr的用法比较
参考博文地址:http://blog.csdn.net/yyt8yyt8/article/details/7030416 值转化为字符串常用以下三种方法: 1. str函数 str函数转化为合理形式的 ...
- myeclipse项目里有红色感叹号
myeclipse项目里有红色感叹号 这种情况是因为 .classpath 文件里面配置引用了某个jar,但是实际上你的 lib 里面并没有这个jar 所以才会有红色的提示. 不用拿.classpat ...
- PHP中9大缓存技术总结(转载 http://www.php100.com/html/php/lei/2015/0919/8969.html)
PHP中9大缓存技术总结 来源: 时间:2015-09-19 02:40:33 阅读数:57767 分享到: 12 [导读] 1.全页面静态化缓存也就是将页面全部生成html静态页面,用户访问 ...
- Java实现数组按数值大小排序
package shb.java.test; /** * 比较数组中元素的大小,按从大到小顺序排列. * @Package:shb.java.test * @Description: * @autho ...
- paper 73 :HDR(High Dynamic Range Imaging)在摄影中指高动态范围成像
HDR(High Dynamic Range Imaging)在摄影中指高动态范围成像.国内的教程基本语焉不详,找到一篇比较详尽的国外教程翻译出来,希望对大家有帮助.^_^ 原文地址:http://p ...