C#实现缩略图简单分析

C#语言有很多值得学习的地方,这里我们主要介绍C#实现缩略图,包括介绍C#实现缩略图必须借助第三方组件等方面。

成都网络公司-成都网站建设公司创新互联公司十多年经验成就非凡,专业从事成都网站设计、成都做网站,成都网页设计,成都网页制作,软文营销1元广告等。十多年来已成功提供全面的成都网站建设方案,打造行业特色的成都网站建设案例,建站热线:18980820575,我们期待您的来电!

以前,在页面上C#实现缩略图必须借助第三方组件。现在,有了.NET,就可以很轻松地C#实现缩略图。

下面就是C#实现缩略图的例子。

 
 
 
  1. using System;  
  2. using System.Collections;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Web;  
  7. using System.Web.SessionState;  
  8. using System.Web.UI;  
  9. using System.Web.UI.WebControls;  
  10. using System.Web.UI.HtmlControls;  
  11. using System.Drawing.Imaging;  
  12. namespace Exam_C  
  13. {  
  14. ///  
  15. /// ToThumbnailImage 的摘要说明。  
  16. ///  
  17. public class ToThumbnailImage : System.Web.UI.Page  
  18. {  
  19. /*  
  20. Create By lion  
  21. 2003-05-20 19:00  
  22. Copyright (C) 2004 www.LionSky.Net. All rights reserved.  
  23. Web: http://www.Lionsky.net ;  
  24. Email: lion-a@sohu.com  
  25. */  
  26.  
  27. static Hashtable htmimes=new Hashtable();  
  28. internal readonly string AllowExt = ".jpe|.jpeg|.jpg|.png|.tif|.tiff|.bmp";  
  29.  
  30. #region Web 窗体设计器生成的代码  
  31. override protected void OnInit(EventArgs e)  
  32. {  
  33. #region htmimes[".jpe"]="image/jpeg";  
  34. htmimes[".jpeg"]="image/jpeg";  
  35. htmimes[".jpg"]="image/jpeg";  
  36. htmimes[".png"]="image/png";  
  37. htmimes[".tif"]="image/tiff";  
  38. htmimes[".tiff"]="image/tiff";  
  39. htmimes[".bmp"]="image/bmp";  
  40. #endregion  
  41. //调用生成缩略图方法  
  42. ToThumbnailImages("lionsky.jpg","b.gif",300);  
  43. }  
  44. #endregion  
  45.  
  46. #region Helper  
  47.  
  48. ///  
  49. /// 获取图像编码解码器的所有相关信息  
  50. ///  
  51. ///  name="mimeType">包含编码解码器的多用途网际邮件扩充协议 (MIME) 类型的字符串 
  52. /// 返回图像编码解码器的所有相关信息 
  53. static ImageCodecInfo GetCodecInfo(string mimeType)  
  54. {  
  55. ImageCodecInfo[] CodecInfo = ImageCodecInfo.GetImageEncoders();  
  56. foreach(ImageCodecInfo ici in CodecInfo)  
  57. {  
  58. if(ici.MimeType == mimeType)return ici;  
  59. }  
  60. return null;  
  61. }  
  62.  
  63. ///  
  64. /// 检测扩展名的有效性  
  65. ///  
  66. ///  name="sExt">文件名扩展名 
  67. /// 如果扩展名有效,返回true,否则返回false. 
  68. bool CheckValidExt(string sExt)  
  69. {  
  70. bool flag=false;  
  71. string[] aExt = AllowExt.Split(''|'');  
  72. foreach(string filetype in aExt)  
  73. {  
  74. if(filetype.ToLower()==sExt)  
  75. {  
  76. flag = true;  
  77. break;  
  78. }  
  79. }  
  80. return flag;  
  81. }  
  82.  
  83. ///  
  84. /// 保存图片  
  85. ///  
  86. ///  name="image">Image 对象 
  87. ///  name="savePath">保存路径 
  88. ///  name="ici">指定格式的编解码参数 
  89. void SaveImage(System.Drawing.Image image,string savePath,ImageCodecInfo ici)  
  90. {  
  91. //设置 原图片 对象的 EncoderParameters 对象  
  92. EncoderParameters parameters = new EncoderParameters(1);  
  93. parameters.Param[0] = new EncoderParameter(Encoder.Quality, ((long) 90));  
  94. image.Save(savePath, ici, parameters);  
  95. parameters.Dispose();  
  96. }  
  97. #endregion  
  98.  
  99. #region Methods  
  100.  
  101. ///  
  102. /// 生成缩略图  
  103. ///  
  104. ///  name="sourceImagePath">原图片路径(相对路径) 
  105. ///  name="thumbnailImagePath">生成的缩略图路径,
    如果为空则保存为原图片路径(相对路径) 
  106. ///  name="thumbnailImageWidth">
    缩略图的宽度(高度与按源图片比例自动生成) 
  107. public void ToThumbnailImages(string sourceImagePath,
    string thumbnailImagePath,int thumbnailImageWidth)  
  108. {  
  109. string SourceImagePath = sourceImagePath;  
  110. string ThumbnailImagePath = thumbnailImagePath;  
  111. int ThumbnailImageWidth = thumbnailImageWidth;  
  112. string sExt = SourceImagePath.Substring(SourceImagePath.LastIndexOf(".")).ToLower();  
  113. if(SourceImagePath.ToString()==System.String.Empty) 
    throw new NullReferenceException("SourceImagePath is null!");  
  114. if(!CheckValidExt(sExt))  
  115. {  
  116. throw new ArgumentException
    ("原图片文件格式不正确,支持的格式有[ "+ AllowExt +" ]","SourceImagePath");  
  117. }  
  118. //从 原图片 创建 Image 对象  
  119. System.Drawing.Image image = System.Drawing.Image.FromFile
    (HttpContext.Current.Server.MapPath(SourceImagePath));  
  120. int num = ((ThumbnailImageWidth / 4) * 3);  
  121. int width = image.Width;  
  122. int height = image.Height;  
  123. //计算图片的比例  
  124. if ((((double) width) / ((double) height)) >= 1.3333333333333333f)  
  125. {  
  126. num = ((height * ThumbnailImageWidth) / width);  
  127. }  
  128. else  
  129. {  
  130. ThumbnailImageWidth = ((width * num) / height);  
  131. }  
  132. if ((ThumbnailImageWidth < 1) || (num < 1))  
  133. {  
  134. return;  
  135. }  
  136. //用指定的大小和格式初始化 Bitmap 类的新实例  
  137. Bitmap bitmap = new Bitmap(ThumbnailImageWidth, num, PixelFormat.Format32bppArgb);  
  138. //从指定的 Image 对象创建新 Graphics 对象  
  139. Graphics graphics = Graphics.FromImage(bitmap);  
  140. //清除整个绘图面并以透明背景色填充  
  141. graphics.Clear(Color.Transparent);  
  142. //在指定位置并且按指定大小绘制 原图片 对象  
  143. graphics.DrawImage(image, new Rectangle(0, 0, ThumbnailImageWidth, num));  
  144. image.Dispose();  
  145. try  
  146. {  
  147. //将此 原图片 以指定格式并用指定的编解码参数保存到指定文件  
  148. string savepath = (ThumbnailImagePath==null?SourceImagePath:ThumbnailImagePath);  
  149. SaveImage(bitmap,HttpContext.Current.Server.MapPath(savepath),
    GetCodecInfo((string)htmimes[sExt]));  
  150. }  
  151. catch(System.Exception e)  
  152. {  
  153. throw e;  
  154. }  
  155. finally  
  156. {  
  157. bitmap.Dispose();  
  158. graphics.Dispose();  
  159. }  
  160. }  
  161. #endregion  
  162.  
  163. }  
  164. }  

【编辑推荐】

  1. C#字符ASCII码学习经验
  2. C#数值类型之间的转换概述
  3. 日期型数据转换成C#长整型数据
  4. C#查看Excel对象模型分析
  5. C#日期型数据简单剖析

文章标题:C#实现缩略图简单分析
文章分享:http://www.zyruijie.cn/qtweb/news32/1232.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联