C#生成缩略图
/// <summary> /// 获取等比例缩放图片的方法 /// </summary> /// <param name="imgPath">待缩放及保存图片的路径</param> /// <param name="format">缩放图片保存的格式</param> /// <param name="scaling">要保持的宽度或高度</param> /// <param name="keepWidthOrHeight">如果为true则保持宽度为scaling,否则保持高度为scaling</param> /// <returns></returns> public bool GetThumbnail(string imgPath, System.Drawing.Imaging.ImageFormat format, int scaling, bool keepWidthOrHeight) { File.Copy(imgPath, imgPath + ".bak"); try { using (System.Drawing.Bitmap myBitmap = new System.Drawing.Bitmap(imgPath)) { int width = 0; int height = 0; int tw = myBitmap.Width;//图像的实际宽度 int th = myBitmap.Height;//图像的实际高度 if (keepWidthOrHeight)//保持宽度 { #region 自动保持宽度 if (scaling >= tw) { width = tw; height = th; } else { double ti = Convert.ToDouble(tw) / Convert.ToDouble(scaling); if (ti == 0d) { width = tw; height = th; } else { width = scaling; height = Convert.ToInt32(Convert.ToDouble(th) / ti); } } #endregion } else { #region 自动保持高度 if (scaling >= th) { width = tw; height = th; } else { double ti = Convert.ToDouble(th) / Convert.ToDouble(scaling); if (ti == 0d) { width = tw; height = th; } else { width = Convert.ToInt32(Convert.ToDouble(tw) / ti); height = scaling; } } #endregion } using (System.Drawing.Image myThumbnail = myBitmap.GetThumbnailImage(width, height, null, IntPtr.Zero)) { myBitmap.Dispose(); File.Delete(imgPath); myThumbnail.Save(imgPath); } } File.Delete(imgPath + ".bak"); return true; } catch { return false; } }