Tre*_*ott 5 c# resize image aspect-ratio
我允许用户调整图像大小,同时尝试保持图像的原始纵横比。
对于每个调整大小操作,我都有一个“偏移”变量,它指示宽度和高度的变化。这是基于鼠标移动的,因此它可以是任意值的组合,具体取决于调整大小时移动鼠标的程度。
我现在正在做的是取两个值(x 和 y 变化)中较大的一个,并使用它来计算相同纵横比的另一个值。这是我的代码:
if (Math.Abs(offset.X) > Math.Abs(offset.Y))
{
offset.Y = (int)(offset.X / AspectRatio);
}
else
{
offset.X = (int)(offset.Y * AspectRatio);
}
Run Code Online (Sandbox Code Playgroud)
长宽比是标准宽度/高度值。
我的代码的问题在于它使用整数值,因此它会四舍五入并导致纵横比扭曲。
我假设我需要做的是捕捉到可被纵横比整除的整数值,或者为此目的。但我不知道如何通过修改这些 x 和 y“偏移”值来做到这一点。
我假设我需要做的是捕捉到可被纵横比整除的整数值,或者为此目的。但我不知道如何通过修改这些 x 和 y“偏移”值来做到这一点。
要么你的纵横比、裁剪或尺寸调整不完美。想一想:
对于 3:4 的宽高比,您可以水平缩放并仍然完美匹配原始比例的最小尺寸是多少?
四个像素。
现在将纵横比更改为两个大素数,您就会看到问题。
相反,您可以在一维中裁剪图像,或者使用图像过滤进行插值,并接受不太完美的宽高比变化。
确保你的计算是正确的。将纵横比计算为浮点值,并仅在最终计算时截断为整数。否则,您将出现双舍入错误。
| 归档时间: |
|
| 查看次数: |
2876 次 |
| 最近记录: |