public static System.Drawing.Image CreateThumbnail(this System.Drawing.Image original, int percentage) { if (percentage < 1) { throw new ArgumentNullException("percentage", "缩放比例不能小于1%"); } return(original.CreateThumbnail(((int)((original.Width * 0.01f) * percentage)), ((int)((original.Height * 0.01f) * percentage)))); }
public static System.Drawing.Image CreateThumbnail(this System.Drawing.Image original, string widthCondition, string heightCondition) { int width = 0; int num2 = 0; string str = ""; int height = 0; int num4 = 0; string str2 = ""; if (widthCondition.StartsWith("=")) { str = "="; if (widthCondition.EndsWith("%")) { num2 = (int)((int.Parse(widthCondition.Substring(1).TrimEnd(new char[] { '%' })) * original.Width) * 0.01); } else { num2 = int.Parse(widthCondition.Substring(1)); } } else { str = "<="; if (widthCondition.EndsWith("%")) { num2 = (int)((int.Parse(widthCondition.Substring(2).TrimEnd(new char[] { '%' })) * original.Width) * 0.01); } else { num2 = int.Parse(widthCondition.Substring(2)); } } if (heightCondition.StartsWith("=")) { str2 = "="; if (heightCondition.EndsWith("%")) { num4 = (int)((int.Parse(heightCondition.Substring(1).TrimEnd(new char[] { '%' })) * original.Height) * 0.01); } else { num4 = int.Parse(heightCondition.Substring(1)); } } else { str2 = "<="; if (heightCondition.EndsWith("%")) { num4 = (int)((int.Parse(heightCondition.Substring(2).TrimEnd(new char[] { '%' })) * original.Height) * 0.01); } else { num4 = int.Parse(heightCondition.Substring(2)); } } float num5 = ((float)num4) / ((float)original.Height); float num6 = ((float)num2) / ((float)original.Width); if ((str == "=") && (str2 == "=")) { width = num2; height = num4; } else if (str == "=") { int num7 = (int)(original.Height * num6); width = num2; height = (num7 <= num4) ? num7 : num4; } else if (str2 == "=") { int num8 = (int)(original.Width * num5); width = (num8 <= num2) ? num8 : num2; height = num4; } else { if ((original.Width <= num2) && (original.Height <= num4)) { return(original); } float num9 = (num6 >= num5) ? num5 : num6; width = (int)(original.Width * num9); height = (int)(original.Height * num9); } return(original.CreateThumbnail(width, height)); }