1 /// <summary> 2 /// 生成缩略图函数 3 /// </summary> 4 /// <param name="width">原始图片的宽度</param> 5 /// <param name="height">原始图片的高度</param> 6 /// <param name="left">水印字符的生成位置</param> 7 /// <param name="right">水印字符的生成位置</param> 8 /// <param name="picpath">原图的所在路径</param> 9 /// <param name="picthumpath">生成缩略图的所在路径</param> 10 public void GetThumbnailImage(int intThumbWidth, int intThumbHeight, int left, int right, string picpath, string picthumpath) 11 { 12 System.Drawing.Image oldimage = System.Drawing.Image.FromFile(picpath); 13 14 //原图宽度和高度 15 int width = oldimage.Width; 16 int height = oldimage.Height; 17 int smallWidth; 18 int smallHeight; 19 20 //获取第一张绘制图的大小,(比较 原图的宽/缩略图的宽 和 原图的高/缩略图的高) 21 if (((decimal)width) / height <= ((decimal)intThumbWidth) / intThumbHeight) 22 { 23 smallWidth = intThumbWidth + 5; 24 smallHeight = intThumbWidth * height / width + 5; 25 } 26 else 27 { 28 smallWidth = intThumbHeight * width / height + 5; 29 smallHeight = intThumbHeight + 5; 30 } 31 32 33 //新建一个图板,以最小等比例压缩大小绘制原图 34 using (System.Drawing.Image bitmap = new System.Drawing.Bitmap(smallWidth, smallHeight)) 35 { 36 //绘制中间图 37 using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap)) 38 { 39 //高清,平滑 40 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; 41 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; 42 g.Clear(Color.Black); 43 g.DrawImage( 44 oldimage, 45 new System.Drawing.Rectangle(0, 0, smallWidth, smallHeight), 46 new System.Drawing.Rectangle(0, 0, width, height), 47 System.Drawing.GraphicsUnit.Pixel 48 ); 49 } 50 //新建一个图板,以缩略图大小绘制中间图 51 using (System.Drawing.Image bitmap1 = new System.Drawing.Bitmap(intThumbWidth, intThumbHeight)) 52 { 53 //绘制缩略图 54 using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap1)) 55 { 56 //高清,平滑 57 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; 58 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; 59 g.Clear(Color.Black); 60 int lwidth = (smallWidth - intThumbWidth) / 2; 61 int bheight = (smallHeight - intThumbHeight) / 2; 62 g.DrawImage(bitmap, new Rectangle(0, 0, intThumbWidth, intThumbHeight), lwidth, bheight, intThumbWidth, intThumbHeight, GraphicsUnit.Pixel); 63 g.Dispose(); 64 bitmap1.Save(picthumpath, System.Drawing.Imaging.ImageFormat.Jpeg); 65 bitmap1.Dispose(); 66 } 67 } 68 } 69 70 oldimage.Dispose(); 71 }