Swift - 将图片缩放至指定尺寸(自动裁掉多余部分,确保图片不变形)
作者:hangge | 2018-06-04 08:10
有时我们需要将许多大小不一的图片缩放成统一的尺寸,但由于这些图片的原始长宽比例与目标尺寸的比例并不相同,如果直接拉伸的话就会造成图片变形。
因此就需要让图片先保持原始比例进行缩放,然后再截取出指定部分。比如下图,缩放后会去掉图片多余的部分,只留下中间部分,从而保证图片不会发生变形。
下面通过样例演示如果将一个图片(UIImage)缩放成指定尺寸。
1,扩展 UIImage
extension UIImage { //将图片缩放成指定尺寸(多余部分自动删除) func scaled(to newSize: CGSize) -> UIImage { //计算比例 let aspectWidth = newSize.width/size.width let aspectHeight = newSize.height/size.height let aspectRatio = max(aspectWidth, aspectHeight) //图片绘制区域 var scaledImageRect = CGRect.zero scaledImageRect.size.width = size.width * aspectRatio scaledImageRect.size.height = size.height * aspectRatio scaledImageRect.origin.x = (newSize.width - size.width * aspectRatio) / 2.0 scaledImageRect.origin.y = (newSize.height - size.height * aspectRatio) / 2.0 //绘制并获取最终图片 UIGraphicsBeginImageContext(newSize) draw(in: scaledImageRect) let scaledImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return scaledImage! } }
2,使用样例
//原始图片 let image = UIImage(named: "image.jpg")! //将图片转成 400 * 300 尺寸 let image2 = image.scaled(to: CGSize(width: 400, height: 300))
全部评论(0)