为了账号安全,请及时绑定邮箱和手机立即绑定

通过保持宽高比和宽度来调整UIImage的大小

通过保持宽高比和宽度来调整UIImage的大小

皈依舞 2019-08-30 11:14:10
我在许多文章中看到通过保持纵横比来调整图像大小。这些函数在调整大小时使用RECT的固定点(宽度和高度)。但是在我的项目中,我需要仅根据宽度调整视图大小,应根据宽高比自动获取高度。有人帮助我实现这一目标。
查看完整描述

3 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

如果您知道新尺寸的高度和宽度,Srikar的方法非常有效。例如,如果您只知道要缩放的宽度而不关心高度,则首先必须计算高度的比例因子。


+(UIImage*)imageWithImage: (UIImage*) sourceImage scaledToWidth: (float) i_width

{

    float oldWidth = sourceImage.size.width;

    float scaleFactor = i_width / oldWidth;


    float newHeight = sourceImage.size.height * scaleFactor;

    float newWidth = oldWidth * scaleFactor;


    UIGraphicsBeginImageContext(CGSizeMake(newWidth, newHeight));

    [sourceImage drawInRect:CGRectMake(0, 0, newWidth, newHeight)];

    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();    

    UIGraphicsEndImageContext();

    return newImage;

}


查看完整回答
反对 回复 2019-08-30
?
智慧大石

TA贡献1946条经验 获得超3个赞

最佳答案Maverick 1st正确翻译为Swift(使用最新的swift 3):


func imageWithImage (sourceImage:UIImage, scaledToWidth: CGFloat) -> UIImage {

    let oldWidth = sourceImage.size.width

    let scaleFactor = scaledToWidth / oldWidth


    let newHeight = sourceImage.size.height * scaleFactor

    let newWidth = oldWidth * scaleFactor


    UIGraphicsBeginImageContext(CGSize(width:newWidth, height:newHeight))

    sourceImage.draw(in: CGRect(x:0, y:0, width:newWidth, height:newHeight))

    let newImage = UIGraphicsGetImageFromCurrentImageContext()

    UIGraphicsEndImageContext()

    return newImage!

}


查看完整回答
反对 回复 2019-08-30
  • 3 回答
  • 0 关注
  • 783 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信