using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
namespace 生成缩略图
{
class ImageClass
{
public bool ThumbnailCallback()
{
return false;
}
/// <summary>
/// 创建缩略图方法
/// </summary>
/// <param name="oldfile">原始图片路径</param>
/// <param name="newfile">生成新图片路径</param>
/// <param name="white">新图片宽</param>
/// <param name="height">新图片高</param>
/// <param name="isZoomByScale">是否按比例尺缩放</param>
public void ShowThumbnail(string oldfile, string newfile, int white, int height, bool isZoomByScale)
{
System.Drawing.Image image = System.Drawing.Image.FromFile(oldfile);
//获取原图高度和宽度
int oldh = image.Height;
int oldw = image.Width;
int neww, newh;
neww = white; newh = height; //直接设定新图的高宽,,
if (isZoomByScale)
{
newh = (oldh / oldw) * neww;
}
try
{
System.Drawing.Image.GetThumbnailImageAbort callb = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
System.Drawing.Image bt = new System.Drawing.Bitmap(neww, newh);
System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bt);
gr.Clear(Color.White);
gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
gr.DrawImage(image, new Rectangle(0, 0, neww, newh), 0, 0, oldw, oldh, GraphicsUnit.Pixel);
switch (oldfile.Substring(oldfile.Length - 3).ToUpper())
{
case "JPG":
bt.Save(newfile, ImageFormat.Jpeg);
break;
case "GIF":
bt.Save(newfile, ImageFormat.Gif);
break;
case "PNG":
bt.Save(newfile, ImageFormat.Png);
break;
default:
bt.Save(newfile, ImageFormat.Jpeg);
break;
}
gr.Dispose();
bt.Dispose();
image.Dispose();
}
catch
{
}
}
}
}