/// <summary>
/// 生成缩略图
/// </summary>
/// <param name="originalImagePath">原图位置</param>
/// <param name="thumbnailPath">缩略图保存位置</param>
/// <param name="width">需要改变的大小(宽高相同的正方形)</param>
public void CreateMinImageAndDel(string originalImagePath, string thumbnailPath, int width,int height)
{
Graphics draw = null;
string FileExt = "";
if (!Directory.Exists(thumbnailPath))
{
Directory.CreateDirectory(thumbnailPath);
}
System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
string photoExtesion = System.IO.Path.GetExtension(originalImagePath).ToLower();
//缩略图位置
int toX = 0;
int toY = 0;
//原图的宽和高
int ow = originalImage.Width;
int oh = originalImage.Height;
//缩略图的宽和高
int toWidth = 0;
int toHeight = 0;
// 宽高比例,的两种特殊情况处理
if (ow < oh)
{
toWidth = Convert.ToInt32(Convert.ToDouble(ow) * (Convert.ToDouble(width) / Convert.ToDouble(oh)));
toHeight = width;
// 计算显示位置
toX = (toHeight - toWidth) / 2;
}
else
{
toWidth = width;
toHeight = Convert.ToInt32(Convert.ToDouble(oh) * (Convert.ToDouble(width) / Convert.ToDouble(ow)));
// 计算显示位置
toY = (toWidth - toHeight) / 2;
}
//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(width, width);
System.Drawing.Image bitmap2 = new System.Drawing.Bitmap(width, width);
//新建一个画板
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.Clear(System.Drawing.Color.White);
//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage, new System.Drawing.Rectangle(toX, toY, toWidth, toHeight));
try
{
//以jpg格式保存缩略图
FileExt = Path.GetFileNameWithoutExtension(originalImagePath);
//用新建立的image对象拷贝bitmap对象 让g对象可以释放资源
draw = Graphics.FromImage(bitmap2);
draw.DrawImage(bitmap, 0, 0);
}
catch (System.Exception e)
{
throw e;
}
finally
{
originalImage.Dispose();
bitmap.Dispose();
g.Dispose();
//保存调整在这里即可
bitmap2.Save(thumbnailPath + FileExt + ".png", System.Drawing.Imaging.ImageFormat.Png);
}
/// 生成缩略图
/// </summary>
/// <param name="originalImagePath">原图位置</param>
/// <param name="thumbnailPath">缩略图保存位置</param>
/// <param name="width">需要改变的大小(宽高相同的正方形)</param>
public void CreateMinImageAndDel(string originalImagePath, string thumbnailPath, int width,int height)
{
Graphics draw = null;
string FileExt = "";
if (!Directory.Exists(thumbnailPath))
{
Directory.CreateDirectory(thumbnailPath);
}
System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
string photoExtesion = System.IO.Path.GetExtension(originalImagePath).ToLower();
//缩略图位置
int toX = 0;
int toY = 0;
//原图的宽和高
int ow = originalImage.Width;
int oh = originalImage.Height;
//缩略图的宽和高
int toWidth = 0;
int toHeight = 0;
// 宽高比例,的两种特殊情况处理
if (ow < oh)
{
toWidth = Convert.ToInt32(Convert.ToDouble(ow) * (Convert.ToDouble(width) / Convert.ToDouble(oh)));
toHeight = width;
// 计算显示位置
toX = (toHeight - toWidth) / 2;
}
else
{
toWidth = width;
toHeight = Convert.ToInt32(Convert.ToDouble(oh) * (Convert.ToDouble(width) / Convert.ToDouble(ow)));
// 计算显示位置
toY = (toWidth - toHeight) / 2;
}
//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(width, width);
System.Drawing.Image bitmap2 = new System.Drawing.Bitmap(width, width);
//新建一个画板
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.Clear(System.Drawing.Color.White);
//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage, new System.Drawing.Rectangle(toX, toY, toWidth, toHeight));
try
{
//以jpg格式保存缩略图
FileExt = Path.GetFileNameWithoutExtension(originalImagePath);
//用新建立的image对象拷贝bitmap对象 让g对象可以释放资源
draw = Graphics.FromImage(bitmap2);
draw.DrawImage(bitmap, 0, 0);
}
catch (System.Exception e)
{
throw e;
}
finally
{
originalImage.Dispose();
bitmap.Dispose();
g.Dispose();
//保存调整在这里即可
bitmap2.Save(thumbnailPath + FileExt + ".png", System.Drawing.Imaging.ImageFormat.Png);
}
}
调用:
原图路径:
string url = Server.MapPath("images/TemporaryImage/BigPhoto/" + newname);
// 生成小图路径
string bcurl = Server.MapPath("images/TemporaryImage/SmallPhoto/");
CreateMinImageAndDel(url, bcurl, 180,180);