Swift - 给图片添加图片水印(图片上绘制另一张图,并可设透明度)
2024-10-14 18:52:25
我前面写了篇文章讲解如何给图片添加文字水印,而如果想要添加图片类型的水印也很简单,只要把原来代码里添加文字的部分改成图片即可。
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() } } |
最新文章
- UE4开发神秘海域类游戏原型 初阶(二):动画资源的整合
- fildder 使用方法汇总
- 团队开发——冲刺1.c
- sql apply
- Delphi7的HtmlParser使用方法
- .net 使用PowerShell获取电脑中的UUID
- Samba 服务使用的端口和协议(是一组TCP UDP协议的组合,主要使用CIFS协议,有一个Java例子)
- 未能加载文件或程序集“Report.Basic”或它的某一个依赖项。试图加载格式不正确的程序
- Delphi 写日志的类
- 点评阿里JAVA手册之编程规约(OOP 规约 、集合处理 、并发处理 、其他)
- MVC下 把数据库中的byte[]值保存成图片,并显示在view页面
- Qt快速入门第三版下载
- Git常用的操作
- spring boot升级到2.x的坑
- linux中free命令内存分析
- drone 1.0 新功能试用以及说明
- AjaxResult
- Route Between Two Nodes in Graph
- [翻译] UIColor-uiGradientsAdditions
- 1、编写第一个java程序--Hello—World
热门文章
- document.getElementsByClassName在ie8及其以下浏览器的兼容性问题
- 1214 线段覆盖wiki oi
- POJ 3691 &;amp; HDU 2457 DNA repair (AC自己主动机,DP)
- leetcode第一刷_Set Matrix Zeroes
- 浅析C++基础知识
- POJ 1155 - TELE 树型DP(泛化背包转移)..
- 【JQuery】eval()出现missing after property id 错误。
- memset函数的使用
- Activity中Menu相关的几个方法的调用时机
- python成长之路——第四天