当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > asp.net生成高质量缩略图通用函数(c#代码),支持多种生成方式

ASP.NET
asp.net 产生随机颜色实现代码
asp.ent(C#)中判断空字符串的3种方法以及性能分析
asp.net 基于forms验证的目录角色权限的实现
ASP.NET 统计图表控件小结
asp.net 动态引用样式表代码
asp.net 获取IP的相关资料
真正的获取客户端真实IP地址及利弊分析
asp.net(c#)文件下载实现代码
asp.net 不用GridView自带删除功能,删除一行数据
asp.net forms身份验证,避免重复造轮子
asp.net 站点URLRewrite使用小记
asp.net Gridview行绑定事件新体会
asp.net MVC实现简单的上传功能
asp.net web.config加密解密方法
aspx实现的 jquery ui 的 flexgrid demo
ASP.NET Internet安全Forms身份验证方法
asp.net使用for循环实现Datalist的分列显示功能
jQuery AJax调用asp.net webservers的实现代码
ASP.NET 页面刷新和定时跳转代码整理
asp.net GridView控件鼠标移动某行改变背景颜色(方法一)

ASP.NET 中的 asp.net生成高质量缩略图通用函数(c#代码),支持多种生成方式


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 225 ::
收藏到网摘: n/a

这两天正在研究报表中饼图的绘图方法,文章中的某些做法值得参考. /// <summary>
/// 生成缩略图
/// </summary>
/// <param name="originalImagePath">源图路径(物理路径)</param>
/// <param name="thumbnailPath">缩略图路径(物理路径)</param>
/// <param name="width">缩略图宽度</param>
/// <param name="height">缩略图高度</param>
/// <param name="mode">生成缩略图的方式</param>
public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
{
Image originalImage = Image.FromFile(originalImagePath);
int towidth = width;
int toheight = height;
int x = 0;
int y = 0;
int ow = originalImage.Width;
int oh = originalImage.Height;
switch (mode)
{
case "HW"://指定高宽缩放(可能变形)
break;
case "W"://指定宽,高按比例
toheight = originalImage.Height * width/originalImage.Width;
break;
case "H"://指定高,宽按比例
towidth = originalImage.Width * height/originalImage.Height;
break;
case "Cut"://指定高宽裁减(不变形)
if((double)originalImage.Width/(double)originalImage.Height > (double)towidth/(double)toheight)
{
oh = originalImage.Height;
ow = originalImage.Height*towidth/toheight;
y = 0;
x = (originalImage.Width - ow)/2;
}
else
{
ow = originalImage.Width;
oh = originalImage.Width*height/towidth;
x = 0;
y = (originalImage.Height - oh)/2;
}
break;
default :
break;
}
//新建一个bmp图片
Image bitmap = new System.Drawing.Bitmap(towidth,toheight);
//新建一个画板
Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空画布并以透明背景色填充
g.Clear(Color.Transparent);
//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),
new Rectangle(x, y, ow,oh),
GraphicsUnit.Pixel);
try
{
//以jpg格式保存缩略图
bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch(System.Exception e)
{
throw e;
}
finally
{
originalImage.Dispose();
bitmap.Dispose();
g.Dispose();
}
}