У меня есть функция C # для изменения размера изображений. Параметры функции - это оригинальный путь к изображению, новый путь к изображению (путь после сохранения изменения размера изображения).
Теперь я хочу построить логику для требования ниже.
1. Если ширина оригинального файла больше 480 или меньше 450, тогда я хочу установить ширину выходного изображения равной 450px. Высота должна быть пропорциональна ширине.
- Если ширина исходного файла> его высота, то добавьте пробел сверху и снизу (к высоте), чтобы новая высота была 650.
Я использую следующий код для изменения размера изображения
try
{
Size oldSize=new Size();
Bitmap oldbmp1 = (Bitmap) Bitmap.FromFile(originalpath);
oldSize.Width=oldbmp1.Width;
oldSize.Height=oldbmp1.Height;
Size newSize=new Size()
using (Bitmap newbmp = new Bitmap(newsize.Width, newsize.Height), oldbmp = Bitmap.FromFile(originalpath) as Bitmap)
{
Graphics newgraphics = Graphics.FromImage(newbmp);
newgraphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
// newsize = GetNewImageSize(oldSize); // here i want the new Size
newgraphics.Clear(Color.FromArgb(-1));
newgraphics.FillRectangle(Brushes.White, 0, 0, newsize.Width, newsize.Height);
newgraphics.DrawImage(oldbmp, 0, 0, newsize.Width, newsize.Height);
try
{
// newgraphics.Save();
ImageCodecInfo[] Info = ImageCodecInfo.GetImageEncoders();
EncoderParameters Params = new EncoderParameters(1);
Params.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
newbmp.Save(newpath, Info[1], Params);
}
catch (Exception ex1)
{
throw ex1;
}
finally
{
newbmp.Dispose();
oldbmp.Dispose();
oldbmp1.Dispose();
}
}
}
catch (Exception ee)
{
throw ee;
}
Может ли какой-нибудь совет, что еще я должен добавить по этому поводу?
РЕДАКТИРОВАТЬ (так как поле комментария не позволит мне иметь больше символов)
Я пробовал это
float ratio = oldImg.Width / oldImg.Height;
SizeF newSize = new SizeF(desiredWidth, desiredWidth * ratio);
Но это не сработает, как я хочу
Пример: мое оригинальное изображение имело ширину 450 и высоту 1094.
Таким образом, отношение = 450/1094, что составляет 0,4113;
Желаемая высота = желаемая ширина * соотношение т.е. 450 * 0,4113, что составляет 185,1
Насколько это пропорционально. Я думаю, что-то должно быть исправлено. Есть еще мысли?
Заранее спасибо