我有一个C编程背景,我习惯于做丑陋的事情。
在C#中执行此扩展操作是否有更优雅/可读的方式:
ImageProcessing.Resize(original, 80, (int)((float)original.Height * (80f / original.Width)));
其中"原创"是.Net Image类,Image.Width和Image.Height因此是整数。
答案 0 :(得分:3)
常规除法后跟底层操作(强制转换为int
)相当于整数除法。乘法和除法是左关联的。因此,您可以使用这么短的代码:
ImageProcessing.Resize(original, 80, 80 * original.Height / original.Width);
为了说服你,假设Width
和Height
分别是300
和200
。然后你的代码将执行此操作:
(int)(200f * (80f / 300f)) = (int)(200f * 0.2666...) = (int)(53.3333...) = 53
我的代码将执行此操作(其中/
表示整数除法):
80 * 200 / 300 = 16000 / 300 = 53
答案 1 :(得分:0)
如果你想改变代码(看起来没问题):因为" w / h"是aspect ratio分别计算它可能生成更多自我记录的代码:
var aspectRatio = original.Width / (float)original.Height;
int newWidth = 80;
ImageProcessing.Resize(original, newWidth, (int)(newWidth / aspectRatio));