我前面寫了篇文章講解如何給圖檔添加文字水印,而如果想要添加圖檔類型的水印也很簡單,隻要把原來代碼裡添加文字的部分改成圖檔即可。
1,效果圖如下:
(在圖檔左上角添加了一個半透明的logo圖檔)

2,為友善使用,我們通過擴充UIImage類來實作添加圖檔水印功能
(水印圖檔透明度,位置,邊距都可以設定)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<code>//--- UIImageExtension.swift ---</code>
<code>extension</code><code>UIImage</code><code>{</code>
<code> </code>
<code> </code><code>//水印位置枚舉</code>
<code> </code><code>enum</code> <code>WaterMarkCorner</code><code>{</code>
<code> </code><code>case</code> <code>TopLeft</code>
<code> </code><code>case</code> <code>TopRight</code>
<code> </code><code>case</code> <code>BottomLeft</code>
<code> </code><code>case</code> <code>BottomRight</code>
<code> </code><code>}</code>
<code> </code><code>//添加圖檔水印方法</code>
<code> </code><code>func</code> <code>waterMarkedImage(waterMarkImage:</code><code>UIImage</code><code>, corner:</code><code>WaterMarkCorner</code> <code>= .</code><code>BottomRight</code><code>,</code>
<code> </code><code>margin:</code><code>CGPoint</code> <code>=</code><code>CGPoint</code><code>(x: 20, y: 20), alpha:</code><code>CGFloat</code> <code>= 1) -></code><code>UIImage</code><code>{</code>
<code> </code>
<code> </code><code>var</code> <code>markFrame =</code><code>CGRectMake</code><code>(0, 0, waterMarkImage.size.width, waterMarkImage.size.height)</code>
<code> </code><code>let</code> <code>imageSize =</code><code>self</code><code>.size</code>
<code> </code><code>switch</code> <code>corner{</code>
<code> </code><code>case</code> <code>.</code><code>TopLeft</code><code>:</code>
<code> </code><code>markFrame.origin = margin</code>
<code> </code><code>case</code> <code>.</code><code>TopRight</code><code>:</code>
<code> </code><code>markFrame.origin =</code><code>CGPoint</code><code>(x: imageSize.width - waterMarkImage.size.width - margin.x,</code>
<code> </code><code>y: margin.y)</code>
<code> </code><code>case</code> <code>.</code><code>BottomLeft</code><code>:</code>
<code> </code><code>markFrame.origin =</code><code>CGPoint</code><code>(x: margin.x,</code>
<code> </code><code>y: imageSize.height - waterMarkImage.size.height - margin.y)</code>
<code> </code><code>case</code> <code>.</code><code>BottomRight</code><code>:</code>
<code> </code><code>}</code>
<code> </code><code>// 開始給圖檔添加圖檔</code>
<code> </code><code>UIGraphicsBeginImageContext</code><code>(imageSize)</code>
<code> </code><code>self</code><code>.drawInRect(</code><code>CGRectMake</code><code>(0, 0, imageSize.width, imageSize.height))</code>
<code> </code><code>waterMarkImage.drawInRect(markFrame, blendMode: .</code><code>Normal</code><code>, alpha: alpha)</code>
<code> </code><code>let</code> <code>waterMarkedImage =</code><code>UIGraphicsGetImageFromCurrentImageContext</code><code>()</code>
<code> </code><code>UIGraphicsEndImageContext</code><code>()</code>
<code> </code><code>return</code> <code>waterMarkedImage</code>
<code>}</code>
3,使用樣例
<code>import</code> <code>UIKit</code>
<code>class</code> <code>ViewController</code><code>:</code><code>UIViewController</code> <code>{</code>
<code> </code><code>@IBOutlet</code> <code>weak</code> <code>var</code> <code>imageView:</code><code>UIImageView</code><code>!</code>
<code> </code><code>override</code> <code>func</code> <code>viewDidLoad() {</code>
<code> </code><code>super</code><code>.viewDidLoad() </code>
<code> </code>
<code> </code><code>//給圖檔添加水印</code>
<code> </code><code>imageView.image =</code><code>UIImage</code><code>(named:</code><code>"bg"</code><code>)?</code>
<code> </code><code>.waterMarkedImage(</code><code>UIImage</code><code>(named:</code><code>"logo7"</code><code>)!,corner: .</code><code>TopLeft</code><code>,</code>
<code> </code><code>margin:</code><code>CGPoint</code><code>(x: 20, y: 20), alpha:1)</code>
<code> </code><code>override</code> <code>func</code> <code>didReceiveMemoryWarning() {</code>
<code> </code><code>super</code><code>.didReceiveMemoryWarning()</code>