|
下面这段代码实现的功能是在asp.net中生成高清晰的缩略图,提供源图路径、缩略图路径、宽度、高度这四个参数就完成了此项的功能。详细代码如下:
/// <summary> /// 生成缩略图 /// </summary> /// <param name="originalImagePath">源图路径(物理路径)</param> /// <param name="thumbnailPath">缩略图路径(物理路径)</param> /// <param name="width">缩略图宽度</param> /// <param name="height">缩略图高度</param> public void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height) { System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
int towidth = 0; int toheight =0; if(originalImage.Width>width &&originalImage.Height<height) { towidth = width; toheight = originalImage.Height; }
if (originalImage.Width<width && originalImage.Height >height) { towidth = originalImage.Width; toheight = height; } if (originalImage.Width > width && originalImage.Height > height) { towidth = width; toheight = height; } if (originalImage.Width < width && originalImage.Height < height) { towidth = originalImage.Width; toheight = originalImage.Height; } int x = 0;//左上角的x坐标 int y = 0;//左上角的y坐标
//新建一个bmp图片 System.Drawing.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,x,y,towidth,toheight);
try { //以jpg格式保存缩略图 bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg); } catch (System.Exception e) { throw e; } finally { originalImage.Dispose(); bitmap.Dispose(); g.Dispose(); } }
|