您的位置:首页 > 其它

.net 一个图片操作类(封装了以下)

2007-08-12 16:35 429 查看

using System;


using System.Data;


using System.Configuration;


using System.Web;


using System.Web.Security;


using System.Web.UI;


using System.Web.UI.WebControls.WebParts;


using System.Web.UI.HtmlControls;


using System.Drawing;




namespace EastSoft.BaseClass




...{




/**//// <summary>


/// 程序设计:陈文利 QQ:36055915 MSN:sinofishing@hotmail.com


/// </summary>


public class ImageMgr




...{


public ImageMgr()




...{


//


// TODO: 在此处添加构造函数逻辑


//


}




/**//// <summary>


///


/// </summary>


/// <param name="originalImagePath"></param>


/// <param name="thumbnailPath"></param>


/// <param name="width"></param>


/// <param name="height"></param>


/// <param name="mode">"HW"://指定高宽缩放(可能变形)


/// "W"://指定宽,高按比例


/// "H"://指定高,宽按比例


/// "Cut"://指定高宽裁减(不变形)</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();


}


}






public static Image RetrunImage(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格式保存缩略图


return bitmap;


}


catch (System.Exception e)




...{


throw e;


}


finally




...{


originalImage.Dispose();


bitmap.Dispose();


g.Dispose();


}


}


}


}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: