1. 程式人生 > >[Xcode10 實際操作]六、媒體與動畫-(1)使用圖形上下文按一定比例縮放圖片

[Xcode10 實際操作]六、媒體與動畫-(1)使用圖形上下文按一定比例縮放圖片

本文將演示如何通過圖形上下文,來實現圖片縮放的功能.

在專案導航區,開啟檢視控制器的程式碼檔案【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(width: 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(width: scaledWidth, height: scaledHeight) 47 48 //建立繪圖上下文環境 49 UIGraphicsBeginImageContext(targetSize) 50 //將影象物件,畫入之前計算的新尺寸裡,原點為(0,0,) 51 image.draw(in: CGRect(x: 0, y: 0, width: 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 }