У меня есть метод ниже, который я нашел в Интернете, который изменяет размер изображения до приблизительного размера, сохраняя соотношение сторон.Изменение размера изображений в C#
public Image ResizeImage(Size size)
{
int sourceWidth = _Image.Width;
int sourceHeight = _Image.Height;
float nPercent = 0;
float nPercentW = 0;
float nPercentH = 0;
nPercentW = ((float)size.Width/(float)sourceWidth);
nPercentH = ((float)size.Height/(float)sourceHeight);
if (nPercentH > nPercentW)
nPercent = nPercentH;
else
nPercent = nPercentW;
int destWidth = (int)(sourceWidth * nPercent);
int destHeight = (int)(sourceHeight * nPercent);
Bitmap b = new Bitmap(destWidth, destHeight);
Graphics g = Graphics.FromImage((Image)b);
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(_Image, 0, 0, destWidth, destHeight);
g.Dispose();
return (Image)b;
}
Я обычно прохожу в размерах с шириной 100px и высотой 100px - как часть моих требований я не могу иметь какое-либо одного измерения (высоту или ширину) находится под 100px, так что если аспект соотношение не является квадратным, другое измерение будет выше.
То, что я нахожу с помощью этого метода, иногда является одним из размеров будет составлять менее 100 пикселей - например, 96 пикселей или 99 пикселей. Как я могу изменить этот метод, чтобы этого не произошло?
Я думаю, что самым простым способом было бы проверить destWidth или height для <100, если они затем умножают оба w и h на скаляр, полученный из минимума vals/erroneous val (надеюсь, это даст число, подобное 1.05 (не написано как ответ, так как его легче писать комментарии на моем телефоне!) – Sayse
его bcz его поддерживающее соотношение сторон ur originasl picture –