Swift - 使用CGBlendMode改变UIImage颜色
类似于PS,Swift中也可对图片UIImage进行图层混合(blending),而且提供了相当丰富的混合模式(blendMode)。本文先介绍使用其中的kCGBlendModeDestinationIn实现图片颜色的修改。
首先为便于blending,我们扩展系统UIImage类,给其增加tint方法,方法内部即为相关的图层混合操作。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import UIKit //--- UIImageTintExtension.swift --- extension UIImage { func tint(color: UIColor , blendMode: CGBlendMode ) -> UIImage { let drawRect = CGRectMake (0.0, 0.0, size.width, size.height) UIGraphicsBeginImageContextWithOptions (size, false , scale) //let context = UIGraphicsGetCurrentContext() //CGContextClipToMask(context, drawRect, CGImage) color.setFill() UIRectFill (drawRect) drawInRect(drawRect, blendMode: blendMode, alpha: 1.0) let tintedImage = UIGraphicsGetImageFromCurrentImageContext () UIGraphicsEndImageContext () return tintedImage } } |

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
|
import UIKit class ViewController : UIViewController { //用于显示原图 @IBOutlet weak var imageView0: UIImageView ! //用于显示处理后的图片 @IBOutlet weak var imageView1: UIImageView ! @IBOutlet weak var imageView2: UIImageView ! @IBOutlet weak var imageView3: UIImageView ! override func viewDidLoad() { super .viewDidLoad() // Do any additional setup after loading the view, typically from a nib. //设置原图 imageView0.image= UIImage (named: "logo6" ) //设置各种色调的图片 imageView1.image = UIImage (named: "logo6" )?.tint( UIColor .brownColor(), blendMode: . DestinationIn ) imageView2.image = UIImage (named: "logo6" )?.tint( UIColor .blueColor(), blendMode: . DestinationIn ) imageView3.image = UIImage (named: "logo6" )?.tint( UIColor .orangeColor(), blendMode: . DestinationIn ) } override func didReceiveMemoryWarning() { super .didReceiveMemoryWarning() } } |
Swift - 使用CGBlendMode改变UIImage颜色的更多相关文章
- [Xcode 实际操作]九、实用进阶-(17)使用CGBlendMode改变UIImage颜色,实现对图片进行混合着色
目录:[Swift]Xcode实际操作 本文将演示如何使用CGBlendMode改变UIImage颜色,实现对图片进行混合着色. 在项目文件夹[DemoApp]上点击鼠标右键 ->[New Fi ...
- Swift之UITabBarController 导航控制器颜色的改变
废话不多 直接上代码 self.window = UIWindow(frame: UIScreen.mainScreen().bounds) self.window!.backgroundColor ...
- iOS开发笔记--使用blend改变图片颜色
最近对Core Animation和Core Graphics的内容东西比较感兴趣,自己之前也在这块相对薄弱,趁此机会也想补习一下这块的内容,所以之后几篇可能都会是对CA和CG学习的记录的文章. 在应 ...
- [JS9] document's bgColor改变背景颜色
<HTML> <HEAD> <TITLE>设置背景颜色</TITLE> </HEAD> <BODY> <CENTER> ...
- Android--ColorMatrix改变图片颜色
前言 本篇博客讲解如何通过改变图片像素点RGB的值的方式,在Android中改变图片的颜色.在最后将以一个简单的Demo来作为演示. 本篇博客的主要内容: ColorMatrix 使用ColorMat ...
- OpenGL的glClearColor和glClear改变背景颜色
OpenGL的glClearColor和glClear改变背景颜色 结合以下两个函数void glClearColor(GLclampf red, GLclampf green, GLclamp ...
- dev grdicontrol 根据条件改变行颜色,字体颜色等
dev grdicontrol 根据条件改变行背景 dev grdicontrol 根据条件改变字体颜色 dev grdicontrol 根据条件改变某个单元格背景 不用写代码 打开gridc ...
- WPF动态改变主题颜色
原文:WPF动态改变主题颜色 国内的WPF技术先行者周银辉曾介绍过如何动态改变应用程序的主题样式,今天我们来介绍一种轻量级的改变界面风格的方式--动态改变主题色. 程序允许用户根据自己的喜好来对界面进 ...
- 关于用PS改变图像颜色
由于写的一个页面主色调变了,里面的一些图标颜色也要相应改变,自己难得重新去psd里面截图,就想着用ps,看能否直接能变换一下图标颜色.其实方法也很简单的. 1:用ps打开需要改变图标颜色的文件,然后选 ...
随机推荐
- 安装ubuntu时的注意事项----个人小总结
今天重装了一次ubuntu,以前是别人帮我装的,而这次是我自己照着网上教程装的. 这个教程还是挺不错的,我就是照着这个装成功的 http://jingyan.baidu.com/article/60c ...
- TCP/IP之DNS域名解析系统
DNS系统是一个分布式的数据库,当一个数据库发现自己并没有某查询所需要的数据的时候,它将把查询转发出去,而转发的目的地通常是根服务器,根服 务器从上至下层层转发查询,直到找到目标为止.DNS还有一个特 ...
- ftp上传错误
明明设置好了权限,但是在上传的时候提示如下错误,但在使用的过程当中,发现有的时候是可以上传的,很奇怪的问题. baidu 了一下,发现是下面的这个设置导致的.改过来后,果然正常. 这个设置只是一个字符 ...
- <%@ include file=” ”%> ——最简洁易懂的解释
<%@ include file=” ”%> 假如 在B.jsp 中,使用 <%@ include file=”A.jsp”%> ,那么就是把 A.jsp 的内容 原封不动 ...
- OpenSSL命令---req
用途: 本指令用来创建和处理PKCS#10格式的证书.它还能够建立自签名证书,做Root CA. 用法: openssl req [-inform PEM|DER] [-outform PEM|DER ...
- Linux下安装jekyll
折腾了大半天,终于搞定了,这可得记下来了. 我的Linux版本:CentOS 6.5 主要的安装顺序还是官网上的说明:http://jekyllrb.com/docs/installation/,所以 ...
- CString 操作指南
过阅读本文你可以学习如何有效地使用 CString. CString 是一种很有用的数据类型.它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多.不管怎样,使用CStri ...
- JAVA ANDROID SOCKET通信检测(SERVER)连接是否断开
Pre 解决思路 代码后记: 客户端app上的部分代码 调用: 服务器上: 客户端判断服务器是否还活着代码: PRE 在利用socket写通讯程序的时候,想检测服务器是否还活着. 从网上找了很多资料, ...
- 2015.7.17( NOI2015 day1 )
今天早起做了NOI2015网络同步赛.... 最近NOI是越来越向NOIP靠拢了....但是我还是不会做..... 第一题:程序自动分析 先离散化一下..然后最多就剩20w个数 , 不等于就存起来.. ...
- Socket编程模式理解与对比
本文主要分析了几种Socket编程的模式.主要包括基本的阻塞Socket.非阻塞Socket.I/O多路复用.其中,阻塞和非阻塞是相对于套接字来说的,而其他的模式本质上来说是基于Socket的并发模式 ...