[Xcode 實際操做]6、媒體與動畫-(1)使用圖形上下文按必定比例縮放圖片

目錄:[Swift]Xcode實際操做html

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

在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】ide

 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 }
相關文章
相關標籤/搜索