using System;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;

namespace Eyu.Common

...{

/**//// <summary>
/// 缩放处理
/// </summary>
public class Thumbnail

...{
private string workingDirectory = string.Empty; //图片所在目录
private string imgFileName = string.Empty; //图片名称
private ThumbnailMode mode = ThumbnailMode.ByWidth;
private int scaleValue = 0;

/**//// <summary>
/// 图片所在目录
/// </summary>
public string WorkingDirectory

...{
get

...{
return workingDirectory;
}
set

...{
workingDirectory = value;
}
}

/**//// <summary>
/// 图片名称
/// </summary>
public string ImageName

...{
get

...{
return imgFileName;
}
set

...{
imgFileName = value;
}
}

/**//// <summary>
/// 设置缩略模式
/// </summary>
public ThumbnailMode Mode

...{

get ...{ return mode; }

set ...{ mode = value; }
}

/**//// <summary>
/// 缩放尺寸
/// </summary>
public int ScaleValue

...{

get ...{ return scaleValue; }

set ...{ scaleValue = value; }
}

/**//// <summary>
/// 图片缩略模式
/// </summary>
public enum ThumbnailMode

...{
ByPercent, //按百分比缩放
ByHeight, //按高度等比缩放
ByWidth, //按宽度等比缩放

}

/**//// <summary>
/// 按模式缩放图片,输出图片名格式为:原图文件名T.jpg
/// </summary>
public void MakeThumbnail()

...{
System.Drawing.Image originalImage = System.Drawing.Image.FromFile(WorkingDirectory + ImageName);

int towidth = 0;
int toheight = 0;

int ow = originalImage.Width;
int oh = originalImage.Height;

switch (Mode)

...{
case ThumbnailMode.ByWidth://指定宽,高按比例
if (ow >= ScaleValue)

...{
toheight = originalImage.Height * ScaleValue / originalImage.Width;
towidth = ScaleValue;
}
else

...{
towidth = ow;
toheight = oh;
}
break;
case ThumbnailMode.ByHeight://指定高,宽按比例
if (oh >= ScaleValue)

...{
toheight = ScaleValue;
towidth = originalImage.Width * ScaleValue / originalImage.Height;
}
else

...{
towidth = ow;
toheight = oh;
}
break;
case ThumbnailMode.ByPercent://按比例缩放
towidth = ow / ScaleValue;
toheight = oh / ScaleValue;
break;
default:
break;
}

//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
//新建一个画板
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空画布并以透明背景色填充
g.Clear(System.Drawing.Color.Transparent);
//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage, 0, 0, towidth, toheight);
g.Dispose();
originalImage.Dispose();
originalImage = (System.Drawing.Image)bitmap.Clone();
originalImage.Save(WorkingDirectory + ImageName + "T.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
bitmap.Dispose();
}
}
}





































































































































































