博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift - 给图片添加滤镜效果(棕褐色老照片滤镜,黑白滤镜)
阅读量:5770 次
发布时间:2019-06-18

本文共 1591 字,大约阅读时间需要 5 分钟。

Core Image是一个强大的滤镜处理框架。它除了可以直接给图片添加各种内置滤镜,还能精确地修改鲜艳程度, 色泽, 曝光等,下面通过两个样例演示如何给UIImage添加滤镜。
1,棕褐色滤镜  - CISepiaTone
这个有点复古老照片发黄的效果(上面一张是原图)。
扩展UIImage类,添加棕褐色滤镜:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import
UIKit
 
//--- UIImageFilterExtension.swift ---
extension
UIImage
{
    
//棕褐色复古滤镜(老照片效果)
    
func
sepiaTone() ->
UIImage
?
    
{
        
let
imageData =
UIImagePNGRepresentation
(
self
)
        
let
inputImage =
CoreImage
.
CIImage
(data: imageData!)
        
let
context =
CIContext
(options:
nil
)
        
let
filter
=
CIFilter
(name:
"CISepiaTone"
)
        
filter
!.setValue(inputImage, forKey: kCIInputImageKey)
        
filter
!.setValue(0.8, forKey:
"inputIntensity"
)
        
if
let
outputImage =
filter
!.outputImage {
            
let
outImage = context.createCGImage(outputImage, fromRect: outputImage.extent)
            
return
UIImage
(
CGImage
: outImage)
        
}
        
return
nil
    
}
}
使用样例:
1
imageView1.image =
UIImage
(named:
"img2.jpg"
)?.sepiaTone()
2,黑白滤镜 - CIPhotoEffectNoir
 
扩展UIImage类,添加黑白滤镜:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import
UIKit
 
//--- UIImageFilterExtension.swift ---
extension
UIImage
{
    
//黑白效果滤镜
    
func
noir() ->
UIImage
?
    
{
        
let
imageData =
UIImagePNGRepresentation
(
self
)
        
let
inputImage =
CoreImage
.
CIImage
(data: imageData!)
        
let
context =
CIContext
(options:
nil
)
        
let
filter
=
CIFilter
(name:
"CIPhotoEffectNoir"
)
        
filter
!.setValue(inputImage, forKey: kCIInputImageKey)
        
if
let
outputImage =
filter
!.outputImage {
            
let
outImage = context.createCGImage(outputImage, fromRect: outputImage.extent)
            
return
UIImage
(
CGImage
: outImage)
        
}
        
return
nil
    
}
}
使用样例:
1
imageView1.image =
UIImage
(named:
"img2.jpg"
)?.noir()
原文出自:  转载请保留原文链接:
你可能感兴趣的文章
Python3批量爬取网页图片
查看>>
iphone-common-codes-ccteam源代码 CCEncoding.m
查看>>
微信公众平台开发(96) 多个功能整合
查看>>
[转]MVC4项目中验证用户登录一个特性就搞定
查看>>
用Perl编写Apache模块续二 - SVN动态鉴权实现SVNAuth 禅道版
查看>>
Android 阴影,圆形的Button
查看>>
C++概述
查看>>
卡特兰数
查看>>
006_mac osx 应用跨屏幕
查看>>
nginx中配置文件的讲解
查看>>
MindNode使用
查看>>
SQL Server 2016 Alwayson新增功能
查看>>
HTTP库Axios
查看>>
CentOS7下安装python-pip
查看>>
认知计算 Cognitive Computing
查看>>
左手坐标系和右手坐标系 ZZ
查看>>
陀螺仪主要性能指标
查看>>
Java 架构师眼中的 HTTP 协议
查看>>
Linux 目录结构和常用命令
查看>>
Linux内存管理之mmap详解 (可用于android底层内存调试)
查看>>