[Xcode 實際操做]9、實用進階-(16)給圖片添加水印效果

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

本文將演示如何截取屏幕畫面,並將截取圖片,存入系統相冊。swift

在項目文件夾【DemoApp】上點擊鼠標右鍵ide

->【New File】建立一個擴展文件->模板選擇窗口:【Swift File】->【Next】post

->【Save As】:ExtensionUIImage.swift->保存默認的存儲位置點擊【Create】spa

在【ExtensionUIImage.swift】添加一個針對UIImage類的擴展。code

擴展能夠向一個已有的類、結構體或枚舉類型添加新功能,orm

包括在沒有獲取源代碼的狀況下,對類型進行功能擴展。htm

點擊編輯代碼文件【ExtensionUIImage.swift】blog

 1 import UIKit
 2 
 3 extension UIImage
 4 {
 5     //添加一個擴展方法,包括的參數:
 6     //1.水印圖片
 7     //2.透明圖
 8     //3.邊距值
 9     //並返回一個添加水印後的圖片
10     func addWaterMark(_ image:UIImage, opacity:CGFloat, margin:CGFloat) -> UIImage
11     {
12         //建立一個位置在(0,0),尺寸與水印圖片相同的顯示區域
13         let imgFrame = CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height)
14         
15         //水印圖片將放置在原始圖片的右下角,
16         //經過將原始圖片的寬度,減去水印圖片的寬度
17         //得到水印圖片在水平方向的位置
18         let posX = self.size.width - imgFrame.size.width  - margin
19         //同理得到水印圖片在垂直方向的位置
20         let posY = self.size.height - imgFrame.size.height - margin
21         //建立一個在目標位置上的顯示區域,用來放置水印圖片
22         let targetFrame = CGRect(x: posX,
23                                  y: posY, 
24                                  width: image.size.width,
25                                  height: image.size.height)
26         
27         //建立一個圖片上下文,上下文的尺寸與原始圖片的尺寸相同
28         UIGraphicsBeginImageContext(self.size)
29         
30         //首先將原始圖片繪製在上下文中,並設置其位置在(0,0)
31         self.draw(in: CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height))
32         //將水印圖片,繪製在上下文中的目標位置
33         //設置圖像混合模式爲正常、並設置其透明度信息
34         image.draw(in: targetFrame, blendMode: .normal, alpha: opacity)
35         //從上下文中,得到最後的渲染圖片
36         let waterMarkedImage = UIGraphicsGetImageFromCurrentImageContext()
37         
38         //關閉上下文環境,及時釋放資源
39         UIGraphicsEndImageContext()
40         
41         //最後返回最終的渲染結果
42         return waterMarkedImage!
43     }
44 }

在項目導航區,打開視圖控制器的代碼文件【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         var sourceImage = UIImage(named: "Pic1")
11         //一樣加載一張圖片資源,做爲水印圖片
12         let waterMarkImage = UIImage(named: "lion")
13         //調用擴展方法,將原始圖片和水印圖片,渲染成最終效果
14         //並設置相關的透明度和邊距信息
15         sourceImage = sourceImage!.addWaterMark(waterMarkImage!, opacity: 0.5, margin: 20)
16         //初始化一個圖像視圖,用來顯示混合後的圖片
17         let imageView = UIImageView(image: sourceImage)
18 
19         //將圖像視圖,添加到當前視圖控制器的根視圖
20         self.view.addSubview(imageView)
21     }
22     
23     override func didReceiveMemoryWarning() {
24         super.didReceiveMemoryWarning()
25         // Dispose of any resources that can be recreated.
26     }
27 }
相關文章
相關標籤/搜索