目标参数:
float width = 1024;
float height = 768;
var brush = new SolidBrush(Color.Black);
原始文件:
var image = new Bitmap(file);
目标大小调整(比例因子):
float scale = Math.Min(width/image.Width, height/image.Height);
容量调整包括涂刷画布第一:
var bmp = new Bitmap((int)width, (int)height);
var graph = Graphics.FromImage(bmp);
// uncomment for higher quality output
//graph.InterpolationMode = InterpolationMode.High;
//graph.CompositingQuality = CompositingQuality.HighQuality;
//graph.SmoothingMode = SmoothingMode.AntiAlias;
var scaleWidth = (int)(image.Width * scale);
var scaleHeight = (int)(image.Height * scale);
graph.FillRectangle(brush, new RectangleF(0, 0, width, height));
graph.DrawImage(image, new Rectangle(((int)width - scaleWidth)/2, ((int)height - scaleHeight)/2, scaleWidth, scaleHeight));
并且不要忘记做一个bmp.Save(filename)
来保存结果文件。
为什么你不能只用数学来计算其他维度? –
@CodyGray究竟是什么“其他”维度?这是一个二维图像,需要在保持高宽比的同时缩小比例。我尝试过只考虑宽高比,并找出与目标尺寸接近的宽度和高度的共同点,并且它从未正确运作。 –