我前面写了篇文章讲解如何给图片添加文字水印,而如果想要添加图片类型的水印也很简单,只要把原来代码里添加文字的部分改成图片即可。

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
//--- UIImageExtension.swift ---
extension UIImage{
     
    //水印位置枚举
    enum WaterMarkCorner{
        case TopLeft
        case TopRight
        case BottomLeft
        case BottomRight
    }
     
    //添加图片水印方法
    func waterMarkedImage(waterMarkImage:UIImage, corner:WaterMarkCorner = .BottomRight,
        margin:CGPoint = CGPoint(x: 20, y: 20), alpha:CGFloat = 1) -> UIImage{
             
            var markFrame = CGRectMake(0, 0, waterMarkImage.size.width, waterMarkImage.size.height)
            let imageSize = self.size
             
            switch corner{
            case .TopLeft:
                markFrame.origin = margin
            case .TopRight:
                markFrame.origin = CGPoint(x: imageSize.width - waterMarkImage.size.width - margin.x,
                    y: margin.y)
            case .BottomLeft:
                markFrame.origin = CGPoint(x: margin.x,
                    y: imageSize.height - waterMarkImage.size.height - margin.y)
            case .BottomRight:
                markFrame.origin = CGPoint(x: imageSize.width - waterMarkImage.size.width - margin.x,
                    y: imageSize.height - waterMarkImage.size.height - margin.y)
            }
             
            // 开始给图片添加图片
            UIGraphicsBeginImageContext(imageSize)
            self.drawInRect(CGRectMake(0, 0, imageSize.width, imageSize.height))
            waterMarkImage.drawInRect(markFrame, blendMode: .Normal, alpha: alpha)
            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
import UIKit
 
class ViewController: UIViewController {
 
    @IBOutlet weak var imageView: UIImageView!
     
    override func viewDidLoad() {
        super.viewDidLoad()       
         
        //给图片添加水印
        imageView.image = UIImage(named:"bg")?
            .waterMarkedImage(UIImage(named: "logo7")!,corner: .TopLeft,
                margin: CGPoint(x: 20, y: 20), alpha:1)
    }
 
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

最新文章

  1. UE4开发神秘海域类游戏原型 初阶(二):动画资源的整合
  2. fildder 使用方法汇总
  3. 团队开发——冲刺1.c
  4. sql apply
  5. Delphi7的HtmlParser使用方法
  6. .net 使用PowerShell获取电脑中的UUID
  7. Samba 服务使用的端口和协议(是一组TCP UDP协议的组合,主要使用CIFS协议,有一个Java例子)
  8. 未能加载文件或程序集“Report.Basic”或它的某一个依赖项。试图加载格式不正确的程序
  9. Delphi 写日志的类
  10. 点评阿里JAVA手册之编程规约(OOP 规约 、集合处理 、并发处理 、其他)
  11. MVC下 把数据库中的byte[]值保存成图片,并显示在view页面
  12. Qt快速入门第三版下载
  13. Git常用的操作
  14. spring boot升级到2.x的坑
  15. linux中free命令内存分析
  16. drone 1.0 新功能试用以及说明
  17. AjaxResult
  18. Route Between Two Nodes in Graph
  19. [翻译] UIColor-uiGradientsAdditions
  20. 1、编写第一个java程序--Hello—World

热门文章

  1. document.getElementsByClassName在ie8及其以下浏览器的兼容性问题
  2. 1214 线段覆盖wiki oi
  3. POJ 3691 & HDU 2457 DNA repair (AC自己主动机,DP)
  4. leetcode第一刷_Set Matrix Zeroes
  5. 浅析C++基础知识
  6. POJ 1155 - TELE 树型DP(泛化背包转移)..
  7. 【JQuery】eval()出现missing after property id 错误。
  8. memset函数的使用
  9. Activity中Menu相关的几个方法的调用时机
  10. python成长之路——第四天