LOMO追求鲜艳色彩,随意、自由的态度,是一种经常使用的滤镜,今天介绍一下iOS 中LOMO滤镜的实现

首先它有3张输入图像

1.我们要处理的图像。即我们要应用LOMO滤镜的图像

2      

3

在gpuimage中多张输入图像的滤镜需要自己写。在这里我参照本身提供的GPUImageTwoInputFilter,自己写了GPUImageThreeInputFilter,用于接收3张输入图像的滤镜。它们都是通过滤镜组的继承来实现,多重滤镜。

  

  片段着色器

NSString *const kFWLomofiShaderString = SHADER_STRING
(precision lowp float;varying highp vec2 textureCoordinate;uniform sampler2D inputImageTexture;uniform sampler2D inputImageTexture2;uniform sampler2D inputImageTexture3;void main(){vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;//获取要处理图像的rgb值向量vec2 red = vec2(texel.r, 0.16666);vec2 green = vec2(texel.g, 0.5);vec2 blue = vec2(texel.b, 0.83333);//使要处理的图像和柔光混合,生成新的像素texel.rgb = vec3(texture2D(inputImageTexture2, red).r,texture2D(inputImageTexture2, green).g,texture2D(inputImageTexture2, blue).b);
//前面生成新的像素再与第二个输入图像的像素进行混合//使用第三个图像作为暗角模板与前面的像素混合vec2 tc = (2.0 * textureCoordinate) - 1.0;float d = dot(tc, tc);vec2 lookup = vec2(d, texel.r);texel.r = texture2D(inputImageTexture3, lookup).r;lookup.y = texel.g;texel.g = texture2D(inputImageTexture3, lookup).g;lookup.y = texel.b;texel.b    = texture2D(inputImageTexture3, lookup).b;
//生成最终的LOMO效果
gl_FragColor = vec4(texel,1.0); } );

@implementation FWLomofiFilter- (id)init
{if (!(self = [super init])){return nil;}FWFilter6 *filter = [[FWFilter6 alloc] init];[self addFilter:filter];
//设置第二个输入图像UIImage *image = [UIImage imageNamed:@"lomoMap"];imageSource1 = [[GPUImagePicture alloc] initWithImage:image];[imageSource1 addTarget:filter atTextureLocation:1];[imageSource1 processImage];
//设置第三个输入图像
UIImage *image1 = [UIImage imageNamed:@"vignetteMap"]; imageSource2 = [[GPUImagePicture alloc] initWithImage:image1]; [imageSource2 addTarget:filter atTextureLocation:2]; [imageSource2 processImage]; self.initialFilters = [NSArray arrayWithObjects:filter, nil]; self.terminalFilter = filter; return self; }

+ (UIImage *)applyLomofiFilter:(UIImage *)image

{

FWLomofiFilter *filter = [[FWLomofiFilter alloc] init];

[filter forceProcessingAtSize:image.size];

//第一个输入图像

GPUImagePicture *pic = [[GPUImagePicture alloc] initWithImage:image];

[pic addTarget:filter];

[pic processImage];

[filter useNextFrameForImageCapture];

//得到效果图

return [filter imageFromCurrentFramebuffer];

}

原图

 

lomo效果图

 

完整代码可以在本人的GITHUB上下载源码!

下面是废话

不善言辞的人进博客园首页就这么难,我得写多少废话才能进?这篇可以吗? 不管文字多少,你上网查查ios实现LOMO滤镜的源码,本滤镜纯自己琢磨,在上一代GPUImage中我通过1个多月的摸索,将多图像滤镜实现的。

iOS滤镜实现之LOMO(美图秀秀经典LOMO)相关推荐

  1. 美图秀秀经典版 4.0.1下载

    美图秀秀经典版最新版是一款功能齐全的图片处理软件.美图秀秀经典版官方版拥有丰富的图像编辑功能,支持独有的照片特效.强大的人像美容.丰富的拍摄模式.有趣的贴图等功能,美图秀秀软件还支持抠图和批量处理的功 ...

  2. iOS开发——打造自己的“美图秀秀”

    iOS开发--绘图与滤镜 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介绍:Quart ...

  3. 微信能修图!美图秀秀们惊恐之后该怎么做

    众多移动应用中最能"抢戏"的,非微信莫属.微商的出现,抢了很多电商平台的销售份额:微信游戏的出现,让不少应用分发平台泪眼汪汪:公众号的出现让今日头条这样的资讯应用表示受伤的总是我: ...

  4. iOS开发系列--打造自己的“美图秀秀”

    --绘图与滤镜全面解析 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介绍:Quartz ...

  5. iOS开发系列–打造自己的“美图秀秀”(上)

    iOS开发系列–打造自己的"美图秀秀"(上) 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两 ...

  6. 美图秀秀滤镜之亮度调整

    图像的亮度, 指的是图像像素的强度, 黑色为最暗, 白色为最亮, 在ios中黑色用0来表示, 白色用1来表示.一个像素, 基本上是用RGB三个颜色分量来表示的. R(0-1), G(0-1),B(0- ...

  7. iOS开发系列–打造自己的“美图秀秀”

    原文出处: KenshinCui    概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介 ...

  8. iOS开发系列--打造自己的ldquo;美图秀秀rdquo;

    --绘图与滤镜全面解析 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介绍:Quartz ...

  9. iOS:iOS开发系列–打造自己的“美图秀秀”(下)

    来源: KenshinCui 链接:http://www.cnblogs.com/kenshincui/p/3959951.html 运行效果: 其他图形上下文 前面我们也说过,Quartz 2D的图 ...

  10. Android绘图机制 Demo(简单完成美图秀秀的滤镜)

    Android绘图机制 Demo(简单完成美图秀秀的滤镜) 1.xml <?xml version="1.0" encoding="utf-8"?> ...

最新文章

  1. Maven project deploy to Nexus
  2. C语言函数集(十五)
  3. 第20天学习Java的笔记-static静态
  4. 78万奖金!天池最新CV大赛来了
  5. 李名洋(1983-),男,中国电信股份有限公司云计算分公司数据分析师。
  6. 王者归来!华为P40 Pro渲染图曝光:后置矩阵徕卡五摄模组
  7. 【前端】vue Unknown custom element: xxxx did you register the component correctly
  8. 阶段3 2.Spring_05.基于XML的IOC的案例1_2 基于XML的IOC的案例-编写spring的Ioc配置
  9. 键盘手机JAVA模拟器下载_手机java模拟器
  10. 【idea打包jar包+运行jar包】亲测详解
  11. 深圳市 华为技能证书补贴攻略
  12. Spark SQL 内置函数(六)Window Functions(基于 Spark 3.2.0)
  13. 如何把MP4转为GIF格式
  14. PL/SQL 嵌套declare begin end
  15. PostgreSQL 杀会话
  16. Mapper method 'com.XXX.dao.XXXMapper.XXX' has an unsupported return type: class XXX
  17. python中strip的用法
  18. 有未经处理的异常 0xC00000FD Stack overflow (参数: 0x00000000, 0x00842000)
  19. 最佳 React UI 组件库,前端开发必备!
  20. Win10 局域网共享文件遇到的疑难杂症通用解决策略

热门文章

  1. java毫秒数_Java中的毫秒数
  2. 文件上传漏洞(客户端绕过,MIMEtipe绕过,getimagesize绕过)
  3. 团队的英文翻译缩写_常用的英文缩写翻译
  4. subs php,nginx subs_filter对输出内容进行替换
  5. 怎么创建一个网站?【建立网站】
  6. 详细讲解修改allure报告自定义的logo和名称中文
  7. php奖状,利用CSS布局做一个简单的荣誉证书(代码示例)
  8. Java 生成数字证书系列(四)生成数字证书(续)
  9. python统计图片数量_Python | 统计每个文件夹各类图片个数
  10. 量化评价和质化评价举例_数据质量量化评价研究与实现