本文将演示如何通过图形上下文,来实现图片缩放的功能.
在项目导航区,打开视图控制器的代码文件【ViewController.swift】
1 import UIKit 2 3 class ViewController: UIViewController { 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 // Do any additional setup after loading the view, typically from a nib. 8 9 //从项目资源文件中读取一张图片 10 let image = UIImage(named: "Picture") 11 //调用缩放图片的方法,将图片缩放至指定尺寸 12 let scaledImage = scaleImage(image: image!, newSize: CGSize( 180, height: 180)) 13 14 //创建一个图像视图,并加载尺寸缩小后的图片 15 let imageView = UIImageView(image: scaledImage) 16 //接着设置图像视图的中心点坐标为(160,160) 17 imageView.center = CGPoint(x: 160, y: 160) 18 19 //将图像视图添加到当前视图控制器的根视图 20 self.view.addSubview(imageView) 21 } 22 23 //首先创建一个方法,传递一个图像参数,和一个缩放比例参数, 24 //实现将图像缩放至指定比例的功能 25 func scaleImage(image:UIImage, newSize:CGSize)->UIImage 26 { 27 //获得源图像的指定的尺寸属性 28 let imageSize = image.size 29 //获得源图像的宽度数值 30 let width = imageSize.width 31 //获得源图像的高度数值 32 let height = imageSize.height 33 34 //计算图像新尺寸和旧尺寸的宽比例 35 let widthFactor = newSize.width/width 36 //计算图像新尺寸和旧尺寸的高比例 37 let heightFactor = newSize.height/height 38 //获取最小的哪个比例 39 let scaleFactor = (widthFactor < heightFactor) ? widthFactor : heightFactor 40 41 //计算图像新的宽度 42 let scaledWidth = width * scaleFactor 43 //计算图像新的高度 44 let scaledHeight = height * scaleFactor 45 //将新的款的和高度,构建成标准的尺寸对象 46 let targetSize = CGSize( scaledWidth, height: scaledHeight) 47 48 //创建绘图上下文环境 49 UIGraphicsBeginImageContext(targetSize) 50 //将图像对象,画入之前计算的新尺寸里,原点为(0,0,) 51 image.draw(in: CGRect(x: 0, y: 0, scaledWidth, height: scaledHeight)) 52 //获取上下文的内容,将内容写入到新的图像对象 53 let newImage = UIGraphicsGetImageFromCurrentImageContext() 54 55 //在方法的结尾,返回生成的新的图像对象 56 return newImage! 57 } 58 59 override func didReceiveMemoryWarning() { 60 super.didReceiveMemoryWarning() 61 // Dispose of any resources that can be recreated. 62 } 63 }