[Xcode 實際操做]6、媒體與動畫-(2)使用圖形上下文轉換圖片爲灰度圖

目錄:[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 = self.grayImage(image: image!)
13         
14         //建立一個圖像視圖對象,
15         //並給圖像視圖對象,加載轉換後的灰度圖片
16         let imageView = UIImageView(image: scaledImage)
17         //而後設置圖像視圖的中心位置爲(160,260)
18         imageView.center = CGPoint(x: 160, y: 260)
19         
20         //將圖像視圖添加到當前視圖控制器的根視圖
21         self.view.addSubview(imageView)
22     }
23     
24     //首先建立一個方法,傳遞一個圖像參數,
25     //實現將圖像轉換爲灰度圖的功能
26     func grayImage(image:UIImage)->UIImage
27     {
28         //得到源圖像的尺寸屬性
29         let imageSize = image.size
30         //得到源圖像的寬度數值
31         let width = Int(imageSize.width)
32          //得到源圖像的高度數值
33         let height = Int(imageSize.height)
34         
35         //建立灰度色彩空間對象,各類設備處理顏色的方式都不一樣,
36         //顏色必須有一個相關的色彩空間,
37         //不然,圖形上下文將不知道如何解釋相關的顏色值。
38         let spaceRef = CGColorSpaceCreateDeviceGray()
39         //參數1:指向要渲染的,繪製內存的地址。
40         //參數2:表示寬度
41         //參數3:表示高度
42         //參數4:表示內存中像素的每一個組件的位數
43         //參數5:表示每一行,在內存中所佔的比特數
44         //參數6:表示上下文使用的顏色空間
45         //參數7:表示是否包含alpha通道
46         let context = CGContext(data: nil, 
47         width: width, 
48         height: height,
49         bitsPerComponent: 8,
50         bytesPerRow: 0, 
51         space: spaceRef,
52         bitmapInfo: CGBitmapInfo().rawValue)!
53         
54         //而後建立一個和源圖像一樣尺寸的空間
55         let rect = CGRect(x: 0, y: 0, width: imageSize.width, height: imageSize.height)
56         //在灰度上下文中畫入圖片
57         context.draw(image.cgImage!, in: rect)
58         //從上下文中,獲取並生成轉爲灰度的圖片
59         let grayImage = UIImage(cgImage: context.makeImage()!)
60         
61         //在方法的末尾,返回最終的灰度圖片
62         return grayImage
63     }
64 
65     override func didReceiveMemoryWarning() {
66         super.didReceiveMemoryWarning()
67         // Dispose of any resources that can be recreated.
68     }
69 }
相關文章
相關標籤/搜索