保持宽高比缩放的算法

偶尔看到网上一些实现的乱糟糟的算法,于心不忍,贴出来这个函数,以后大家都不用费劲了:


static protected float getRatio(Rect boundRect , int target_width,int target_height)

{
float xRatio = (float) 1.0;
float yRatio = (float) 1.0;
float fRatio = (float) 1.0;
//sign bound larger than standard size.
xRatio =  target_width / (float)boundRect.width();
yRatio =  target_height/ (float)(boundRect.height() * xRatio);

if(xRatio < (float)1.0)//x larger ,and use xRatio
{
if(yRatio < 1.0)//and y still larger
{
fRatio = (target_height)/ (float)boundRect.height();
}else
fRatio = xRatio;
}else
{
fRatio = (target_height)/ (float)boundRect.height();
}

if(fRatio > 1.0) // if boundRect smaller than target area ,keep size of it ,not zoom in.
fRatio = (float) 1.0;

return fRatio;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值