Мне нужно знать, как изменить размер изображения, чтобы оно было в коробке, без слишком большого изображения. Ящик имеет установленную ширину и высоту, и я хочу, чтобы изображение заполнило как можно большую часть окна, но поддерживало соотношение сторон, которое оно изначально имело.Как изменить размер изображения, поддерживающего соотношение сторон в C#
ответ
//calculate the ratio
double dbl = (double)image.Width/(double)image.Height;
//set height of image to boxHeight and check if resulting width is less than boxWidth,
//else set width of image to boxWidth and calculate new height
if((int)((double)boxHeight * dbl) <= boxWidth)
{
resizedImage = new Bitmap(original, (int)((double)boxHeight * dbl), boxHeight);
}
else
{
resizedImage = new Bitmap(original, boxWidth, (int)((double)boxWidth/dbl));
}
формула для масштабирования с тем же соотношением является:
newWidth = (int)((double)boxHeight * dbl)
or
newHeight = (int)((double)boxWidth/dbl)
Bitmap original,resizedImage;
try
{
using (FileStream fs = new System.IO.FileStream(imageLabel.Text, System.IO.FileMode.Open))
{
original = new Bitmap(fs);
}
int rectHeight = BOXWIDTH;
int rectWidth = BOXWIDTH;
//if the image is squared set it's height and width to the smallest of the desired dimensions (our box). In the current example rectHeight<rectWidth
if (original.Height == original.Width)
{
resizedImage = new Bitmap(original, rectHeight, rectHeight);
}
else
{
//calculate aspect ratio
float aspect = original.Width/(float)original.Height;
int newWidth, newHeight;
//calculate new dimensions based on aspect ratio
newWidth = (int)(rectWidth * aspect);
newHeight = (int)(newWidth/aspect);
//if one of the two dimensions exceed the box dimensions
if (newWidth > rectWidth || newHeight > rectHeight)
{
//depending on which of the two exceeds the box dimensions set it as the box dimension and calculate the other one based on the aspect ratio
if (newWidth > newHeight)
{
newWidth = rectWidth;
newHeight = (int)(newWidth/aspect);
}
else
{
newHeight = rectHeight;
newWidth = (int)(newHeight * aspect);
}
}
resizedImage = new Bitmap(original, newWidth, newHeight);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Слишком много коды что-то вроде этого –
Вида многословные, но с некоторой очисткой это будет намного намного короче ... –
@AdrianoRepetti One * if-else * достаточно –
Я считаю, что если вы только измените высоту или только ширину, она останется в лучших соотношениях, и ширина/высота изменится вместе с ней. Таким образом, вы можете попробовать, что
Нет, вы не можете сохранить фиксированный размер. Представьте, что у вас есть изображение 100x50, и вы должны нарисовать его в коробке 200x200: вы бы нарисовали изображение 200x50? 100x200? Сохраняя соотношение сторон, оно будет 200x100 –
да, но если вы хотите 200 * 200 и просто измените его на то, что коэффициенты будут выключены. Но да, если вы хотите 200 * 200 на картинке 100 * 50, это не будет работать. Это только в том случае, если вы хотите сохранить коэффициенты – Koen
В этом весь вопрос. Изменение максимально приближенного к желаемым размерам при сохранении формата изображения –
- 1. Изменить размер изображения и поддерживать соотношение сторон
- 2. изменить размер изображения, сохранить соотношение сторон изображения с CSS
- 3. Как изменить размер изображения по ширине и поддерживать соотношение сторон
- 4. Изменить размер изображения и сохранить его соотношение сторон в iOS
- 5. Изменить размер изображения и сохранить соотношение сторон в Autohotkey GUI
- 6. Как изменить соотношение сторон UIView
- 7. Соотношение сторон изображения
- 8. Получить соотношение сторон изображения
- 9. Изменение размера изображения Соотношение сторон
- 10. поддерживать соотношение сторон изображения
- 11. MigLayout: как изменить размер пропорционально ширине (сохраняя соотношение сторон)?
- 12. Как найти соотношение сторон изображения
- 13. Как сохранить соотношение сторон изображения?
- 14. Как изменить соотношение сторон камеры2?
- 15. Как установить соотношение сторон изображения?
- 16. Соотношение сторон изображения swift ios
- 17. CSS - Установить ширину Div 100% и изменить размер Соотношение сторон
- 18. Соотношение сторон изображения к андроиду
- 19. Изображения в ширине div 100%, соотношение сторон?
- 20. Как изменить размер поддерживающего текстуры в libgdx
- 21. PyQt Сохранение QLabel Размер Соотношение сторон
- 22. Соотношение сторон для растрового изображения
- 23. Как сохранить соотношение сторон изображения кнопки .net
- 24. Jssor - как сохранить соотношение сторон изображения?
- 25. Как определить соотношение сторон изображения в css
- 26. UITableViewCell, изображения и соотношение сторон
- 27. Как изменить соотношение сторон с gstreamer?
- 28. Использование Raphael как сохранить соотношение сторон изображения
- 29. Как изменить размер изображения на python, сохраняя соотношение сторон, учитывая целевой размер?
- 30. Javascript изменить размер окна в исходное соотношение сторон
Немного объяснения кода? Или, может быть, некоторые комментарии в вашем коде? –
@JohnDemetriou См. Отредактированный ответ с комментариями –
@MuhammadBashir. Ваше предлагаемое редактирование может иметь хороший код, но его, вероятно, следует написать как новый ответ, поскольку это было бы большим изменением для этого принятого ответа. – AdrianHHH