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

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



皈依舞
浏览 784回答 3
3回答

一只萌萌小番薯

如果您知道新尺寸的高度和宽度,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;}

智慧大石

最佳答案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!}
打开App,查看更多内容
随时随地看视频慕课网APP