想要给图片添加文字水印或者注释,我们需要实现在UIImage上写字的功能。
1,效果图如下:
(在图片左上角和右下角都添加了文字。)
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
43
44
45
46
47
48
|
//--- UIImageExtension.swift ---
import
UIKit
extension
UIImage
{
//水印位置枚举
enum
WaterMarkCorner
{
case
TopLeft
case
TopRight
case
BottomLeft
case
BottomRight
}
//添加水印方法
func
waterMarkedImage(waterMarkText:
String
, corner:
WaterMarkCorner
= .
BottomRight
,
margin:
CGPoint
=
CGPoint
(x: 20, y: 20), waterMarkTextColor:
UIColor
=
UIColor
.whiteColor(),
waterMarkTextFont:
UIFont
=
UIFont
.systemFontOfSize(20),
backgroundColor:
UIColor
=
UIColor
.clearColor()) ->
UIImage
{
let
textAttributes = [
NSForegroundColorAttributeName
:waterMarkTextColor,
NSFontAttributeName
:waterMarkTextFont]
let
textSize =
NSString
(string: waterMarkText).sizeWithAttributes(textAttributes)
var
textFrame =
CGRectMake
(0, 0, textSize.width, textSize.height)
let
imageSize =
self
.size
switch
corner{
case
.
TopLeft
:
textFrame.origin = margin
case
.
TopRight
:
textFrame.origin =
CGPoint
(x: imageSize.width - textSize.width - margin.x, y: margin.y)
case
.
BottomLeft
:
textFrame.origin =
CGPoint
(x: margin.x, y: imageSize.height - textSize.height - margin.y)
case
.
BottomRight
:
textFrame.origin =
CGPoint
(x: imageSize.width - textSize.width - margin.x,
y: imageSize.height - textSize.height - margin.y)
}
// 开始给图片添加文字水印
UIGraphicsBeginImageContext
(imageSize)
self
.drawInRect(
CGRectMake
(0, 0, imageSize.width, imageSize.height))
NSString
(string: waterMarkText).drawInRect(textFrame, withAttributes: textAttributes)
let
waterMarkedImage =
UIGraphicsGetImageFromCurrentImageContext
()
UIGraphicsEndImageContext
()
return
waterMarkedImage
}
}
|
3,使用样例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import
UIKit
class
ViewController
:
UIViewController
{
@IBOutlet
weak
var
imageView:
UIImageView
!
override
func
viewDidLoad() {
super
.viewDidLoad()
//使用链式调用方法,给图片添加两条水印
imageView.image =
UIImage
(named:
"bg"
)?
.waterMarkedImage(
"做最好的开发者知识平台"
)
.waterMarkedImage(
"hangge.com"
, corner: .
TopLeft
,
margin:
CGPoint
(x: 20, y: 20), waterMarkTextColor:
UIColor
.blackColor(),
waterMarkTextFont:
UIFont
.systemFontOfSize(45), backgroundColor:
UIColor
.clearColor())
}
override
func
didReceiveMemoryWarning() {
super
.didReceiveMemoryWarning()
}
}
|