WEB开发网
开发学院软件开发C语言 C#实现缩略图简单分析 阅读

C#实现缩略图简单分析

 2010-09-30 20:51:21 来源:WEB开发网   
核心提示:C#语言有很多值得学习的地方,这里我们主要介绍C#实现缩略图,C#实现缩略图简单分析,包括介绍C#实现缩略图必须借助第三方组件等方面,以前,就可以很轻松地C#实现缩略图,下面就是C#实现缩略图的例子,在页面上C#实现缩略图必须借助第三方组件,现在

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

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

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

using System;  
using System.Collections;  
using System.ComponentModel;  
using System.Data;  
using System.Drawing;  
using System.Web;  
using System.Web.SessionState;  
using System.Web.UI;  
using System.Web.UI.WebControls;  
using System.Web.UI.HtmlControls;  
using System.Drawing.Imaging;  
namespace Exam_C  
{  
/// 
<summary>
 
/// ToThumbnailImage 的摘要说明。  
/// 
</summary>
 
public class ToThumbnailImage : System.Web.UI.Page  
{  
/*  
Create By lion  
2003-05-20 19:00  
Copyright (C) 2004 www.LionSky.Net. All rights reserved.  
Web: http://www.Lionsky.net ;  
Email: [email protected]  
*/  
 
static Hashtable htmimes=new Hashtable();  
internal readonly string AllowExt = ".jpe|.jpeg|.jpg|.png|.tif|.tiff|.bmp";  
 
#region Web 窗体设计器生成的代码  
override protected void OnInit(EventArgs e)  
{  
#region htmimes[".jpe"]="image/jpeg";  
htmimes[".jpeg"]="image/jpeg";  
htmimes[".jpg"]="image/jpeg";  
htmimes[".png"]="image/png";  
htmimes[".tif"]="image/tiff";  
htmimes[".tiff"]="image/tiff";  
htmimes[".bmp"]="image/bmp";  
#endregion  
//调用生成缩略图方法  
ToThumbnailImages("lionsky.jpg","b.gif",300);  
}  
#endregion  
 
#region Helper  
 
/// 
<summary>
 
/// 获取图像编码解码器的所有相关信息  
/// 
</summary>
 
/// 
<param
 name="mimeType"
>
包含编码解码器的多用途网际邮件扩充协议 (MIME) 类型的字符串
</param>
 
/// 
<returns>
返回图像编码解码器的所有相关信息
</returns>
 
static ImageCodecInfo GetCodecInfo(string mimeType)  
{  
ImageCodecInfo[] CodecInfo = ImageCodecInfo.GetImageEncoders();  
foreach(ImageCodecInfo ici in CodecInfo)  
{  
if(ici.MimeType == mimeType)return ici;  
}  
return null;  
}  
 
/// 
<summary>
 
/// 检测扩展名的有效性  
/// 
</summary>
 
/// 
<param
 name="sExt"
>
文件名扩展名
</param>
 
/// 
<returns>
如果扩展名有效,返回true,否则返回false.
</returns>
 
bool CheckValidExt(string sExt)  
{  
bool flag=false;  
string[] aExt = AllowExt.Split(''|'');  
foreach(string filetype in aExt)  
{  
if(filetype.ToLower()==sExt)  
{  
flag = true;  
break;  
}  
}  
return flag;  
}  
 
/// 
<summary>
 
/// 保存图片  
/// 
</summary>
 
/// 
<param
 name="image"
>
Image 对象
</param>
 
/// 
<param
 name="savePath"
>
保存路径
</param>
 
/// 
<param
 name="ici"
>
指定格式的编解码参数
</param>
 
void SaveImage(System.Drawing.Image image,string savePath,ImageCodecInfo ici)  
{  
//设置 原图片 对象的 EncoderParameters 对象  
EncoderParameters parameters = new EncoderParameters(1);  
parameters.Param[0] = new EncoderParameter(Encoder.Quality, ((long) 90));  
image.Save(savePath, ici, parameters);  
parameters.Dispose();  
}  
#endregion  
 
#region Methods  
 
/// 
<summary>
 
/// 生成缩略图  
/// 
</summary>
 
/// 
<param
 name="sourceImagePath"
>
原图片路径(相对路径)
</param>
 
/// 
<param
 name="thumbnailImagePath"
>
生成的缩略图路径,
如果为空则保存为原图片路径(相对路径)
</param>
 
/// 
<param
 name="thumbnailImageWidth"
>
缩略图的宽度(高度与按源图片比例自动生成)
</param>
 
public void ToThumbnailImages(string sourceImagePath,
string thumbnailImagePath,int thumbnailImageWidth)  
{  
string SourceImagePath = sourceImagePath;  
string ThumbnailImagePath = thumbnailImagePath;  
int ThumbnailImageWidth = thumbnailImageWidth;  
string sExt = SourceImagePath.Substring(SourceImagePath.LastIndexOf(".")).ToLower();  
if(SourceImagePath.ToString()==System.String.Empty) 
throw new NullReferenceException("SourceImagePath is null!");  
if(!CheckValidExt(sExt))  
{  
throw new ArgumentException
("原图片文件格式不正确,支持的格式有[ "+ AllowExt +" ]","SourceImagePath");  
}  
//从 原图片 创建 Image 对象  
System.Drawing.Image image = System.Drawing.Image.FromFile
(HttpContext.Current.Server.MapPath(SourceImagePath));  
int num = ((ThumbnailImageWidth / 4) * 3);  
int width = image.Width;  
int height = image.Height;  
//计算图片的比例  
if ((((double) width) / ((double) height)) 
>
= 1.3333333333333333f)  
{  
num = ((height * ThumbnailImageWidth) / width);  
}  
else  
{  
ThumbnailImageWidth = ((width * num) / height);  
}  
if ((ThumbnailImageWidth 
<
 
1
) || (num 
<
 
1
))  
{  
return;  
}  
//用指定的大小和格式初始化 Bitmap 类的新实例  
Bitmap bitmap = new Bitmap(ThumbnailImageWidth, num, PixelFormat.Format32bppArgb);  
//从指定的 Image 对象创建新 Graphics 对象  
Graphics graphics = Graphics.FromImage(bitmap);  
//清除整个绘图面并以透明背景色填充  
graphics.Clear(Color.Transparent);  
//在指定位置并且按指定大小绘制 原图片 对象  
graphics.DrawImage(image, new Rectangle(0, 0, ThumbnailImageWidth, num));  
image.Dispose();  
try  
{  
//将此 原图片 以指定格式并用指定的编解码参数保存到指定文件  
string savepath = (ThumbnailImagePath==null?SourceImagePath:ThumbnailImagePath);  
SaveImage(bitmap,HttpContext.Current.Server.MapPath(savepath),
GetCodecInfo((string)htmimes[sExt]));  
}  
catch(System.Exception e)  
{  
throw e;  
}  
finally  
{  
bitmap.Dispose();  
graphics.Dispose();  
}  
}  
#endregion  
 
}  
}  

Tags:实现 缩略 简单

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接