想要给图片添加文字水印或者注释,我们需要实现在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()
    }
}

Swift - 给图片添加文字水印(图片上写文字,并可设置位置和样式)相关推荐

  1. java 批量为图片添加图标水印和文字水印

    需求,给指定目录下面以.jpg结尾的文件,添加图标水印和文字水印 文章目录 一.基础版本 二.升级版本 三.依赖 一.基础版本 package com.gblfy.util;import com.su ...

  2. 文字转图片,文字水印图片,合成图片,教你 Python 生成网站原创配图!

    又是为站佬们服务(写)水文的一篇,如何应用python来生成或者说是合成自己的原创图片,适合各位站群大佬哥们生成自己的图片,避免没有配图或者侵权碰瓷的尴尬,当然本渣渣这里分享的仅仅是源码demo,后续 ...

  3. php 怎么支持中文图片显示,利用php怎么实现一个给图片添加中文水印的功能

    利用php怎么实现一个给图片添加中文水印的功能 发布时间:2021-01-21 15:13:48 来源:亿速云 阅读:88 作者:Leah 这篇文章给大家介绍利用php怎么实现一个给图片添加中文水印的 ...

  4. java 给 pdf文件添加水印 | Itext7 | 文字水印 | 图片水印 | 多重水印

    java | Itext7 水印 | 文字水印 | 图片水印 本地开发环境:jdk1.8 效果图: maven依赖: <dependency><groupId>com.itex ...

  5. java获取远程图片并在图片上写文字

    本编文章主要是分享一下,从远程获取图片文件,用java在图片上写文字并合成图片的示例.一下代码完全拷贝后是可以正常运行的. 主要有三个类: DrawPicFromUrlToOSS:核心类,获取图片并在 ...

  6. java绘制海报,使用BufferedImage,Graphics2D,drawString方法在图片上写文字,中文不显示;drawString写文字为空问题

    项目场景: 项目场景:公司需要制作一张海报.通过java后台制作海报,给图片拼接图片,添加水印添加文字,定义字体为"宋体",给海报添加头像.姓名.性别.个人简介.二维码等信息.把代 ...

  7. php 用gd库在图片上写文字,并处理文字糊模问题

    今天有个需求,用php在一张图片上写文字. 这个不是挺简单的嘛?我在一个test.php文件上,敲出6行代码,搞定 img=imagecreatefrompng("C:\Users\Admi ...

  8. python 添加半透明水印_如何利用python给图片添加半透明水印

    前言 本文主要给大家介绍了关于python图片添加半透明水印的相关资料,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 示例代码: # coding:utf-8 from PIL im ...

  9. python 添加半透明水印_怎么利用python给图片添加半透明水印

    前言 本文主要给大家简介了关于python图片添加半透明水印的相关资料,共享出来供大家参考学习,下面话不多说了,来一起看看具体的简介吧 示例代码: # coding:utf-8 from PIL im ...

  10. 使用Qpaint在图片上写文字

    开发过程中需要实现在图片上叠加文字,可以采用Qpaint在图片上写文字,然后将图片显示在上面.再将Qlabel加到Qwidget中.效果如下 //创建对象,加载图片 QPixmap pix; pix. ...

最新文章

  1. python知乎-知乎大佬李启方道出肺腑之言:为什么我不建议你学Python?
  2. python怎么读excel文件-python读写excel文件
  3. 页面中的多选框的非空判断
  4. Python的collections之namedtuple的使用及其优势
  5. linux pppd源码下载_pppd源代码分析
  6. ozf oracle,ORACLE EBS 简称大全
  7. C语言 ##__VA_ARGS__ - C语言零基础入门教程
  8. magic square java_测试Magic Square Java的.txt文件
  9. python qt信号在qml 的使用_Python和C++混合使用QML开发GUI
  10. Android第二十四期 - 游戏公告跑马灯效果
  11. 用计算机制作模拟,计算机模拟设计,computer simulation design,音标,读音,翻译,英文例句,英语词典...
  12. DOC命令小问题~~+理解
  13. 一个ABC眼中的中国的创业环境(一)
  14. java服务器返回中文乱码:???
  15. VS自带数据库SqlExpress
  16. 中文作为参数传递乱码
  17. 在硅谷初创公司怎么找投资人
  18. 第1章 Dev C++的使用
  19. 根据身份证解析出生年月
  20. iOS开发-极光推送SDK使用笔记

热门文章

  1. ListActivity的onListItemClick不响应的解决办法
  2. String 比较的部分理解(1)
  3. 机器学习:Python中如何使用最小二乘法
  4. hexo使用jenkins自动部署到阿里云
  5. 空间索引 - GeoHash算法及其实现优化
  6. Android中线程同步之Mutex与Condtion的用法
  7. mybatis处理查询map列表属性为null的问题,而导致查询map无该key对象
  8. 我是唯一一个不介意BCH被称为BCH而不是BTC(目前)的人吗?
  9. Spring 自动装配及其注解
  10. Linux(1)---常用命令