如何根据图片的高度计算其比例宽度?

3
如何根据图片的高度计算其等比宽度
我指的是我们仅知道图片的高度。
string pathToImage = System.IO.Path.Combine(Settings.ContentFolderPath, file);

Image image = new Image();
BitmapImage src = new BitmapImage();
src.BeginInit();
src.UriSource = new Uri(pathToImage, UriKind.Absolute);
src.EndInit();
image.Source = src;
image.Stretch = Stretch.Uniform;
image.Height = canvas1.Height;  
image.Width = ???; 

谢谢!


更新(1)

感谢所有帮助我的人。

请不要投票给愚蠢的人...

更新(2)

解决方案:

string pathToImage = System.IO.Path.Combine(Settings.ContentFolderPath, file);

Image image = new Image();
BitmapImage src = new BitmapImage();
src.BeginInit();
src.UriSource = new Uri(pathToImage, UriKind.Absolute);
src.EndInit();
double ratio = src.Width / src.Height; 
image.Source = src;
image.Stretch = Stretch.Uniform;
image.Height = canvas1.Height;  
image.Width = canvas1.Height * ratio;

3
你计算比例的方法就是将宽度乘以共同比率。这是你所询问的内容吗? - Kirk Woll
2
@DmitryBoyko 那你怎么可能计算宽度呢?你有其他的输入吗?比例?总像素数? - Blorgbeard
1
那么,Image.Width有什么问题吗? - Blorgbeard
1
我完全不同意,关键是在只知道高度时找出图像的宽度,这对我来说是一个合理的问题。 - Justin
@Justin 谢谢你,伙计! - NoWar
显示剩余5条评论
2个回答

30

已知高度和宽度:

var ratio = image.Height / image.Width;

已知高度和比例:

var width = image.Height / ratio;

已知宽度和比率:

var height = image.Width * ratio;

你需要知道其中两个才能计算出另一个。


我有图像的高度和宽度,例如 var width = 900 var height = 800 我正在尝试缩小图像并保持图像纵横比。 - Hitesh Ranaut
嗨@HiteshRanaut,你的图像宽度应该始终是高度的1.125倍(高度的9/8),或者相反,高度始终应该是宽度的8/9。如果你需要更多建议(也许更及时的回复!),那么最好提出一个新问题而不是评论。最好的祝愿,Rich - Rich O'Kelly
嗨,@Rich已经解决了这个问题。谢谢。 - Hitesh Ranaut

7
  1. 计算宽高比:原始宽度 / 原始高度
  2. 将宽高比乘以新的期望高度,得到对应于新高度的新宽度。

如果不知道图像的原始宽度和高度或原始图像的宽度/高度比(也称为宽高比),则无法保持原始图像的纵横比。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接