.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();
}
}
}
}
相关文章推荐
- Android进阶封装之一个类实现兼容Android 6.0权限、适配Android7.0 拍照: 相机与相册上传图片就用我好啦!
- 一个简易模糊视图类的封装,可做出模糊图片效果
- 封装的一个用来下载图片的类
- 封装一个图片轮换的web控件
- C#封装的一个串口操作类(可用于Win CE)
- .net图片操作类,生成缩略图,上传图片截取,上传图片打水印
- PHP封装的一个单例模式Mysql操作类
- 第八课:SDL的简单封装——实现一个图片旋转
- 封装了一个类,让你用几代码就能获得相册或拍照得到的图片
- 封装一个ViewPager真正的实现图片无限循环滚动带导航点
- C#封装的一个JSON操作类
- .Net 图片上传的一个类库的源码
- .Net 图片上传的一个类库的源码
- 一个C#通过iTextSharp封装的PDF文件操作类代码
- 项目中封装了一个弹出框但是点击上面的按钮就崩溃,尽在iOS9.0以下版本出现
- 封装一个 HttpWebRequest 和 HttpWebResponse 常用的操作类
- 详解如何将angular-ui的图片轮播组件封装成一个指令
- 封装一个拦截截屏图片的小功能
- 封装了一个js图片轮换效果的函数
- ios设置导航栏透明方法:使用只有一个像素点的透明图片,通过以下代码即可