iOS滤镜实现之LOMO(美图秀秀经典LOMO)

  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个多月的摸索,将多图像滤镜实现的。

时间: 2024-08-04 06:35:13

iOS滤镜实现之LOMO(美图秀秀经典LOMO)的相关文章

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

众多移动应用中最能"抢戏"的,非微信莫属.微商的出现,抢了很多电商平台的销售份额:微信游戏的出现,让不少应用分发平台泪眼汪汪:公众号的出现让今日头条这样的资讯应用表示受伤的总是我:朋友圈的出现,连自家兄弟QQ空间都忍不下去了,支付宝都被逼出涉黄圈子来应对-- 可以说,微信每次的更新.添加的小动作啥的,都能激起"滔天骇浪",让整个移动圈颤三颤--毕竟数亿的用户基数不是是闹着玩的.近日,在最新版本中,微信增加了图片编辑功能.这对于以美图秀秀为代表的修图.P图.拍照应用来

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

http://www.cnblogs.com/kenshincui/p/3959951.html#overview --绘图与滤镜全面解析 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介绍:Quartz 2D绘制2D图形和Core Image中强大的滤镜功能. Quartz 2D 基本图形绘制 视图刷新 其他图形上下文 Core Image Quartz 2D 在iOS中常用的绘图框

美图秀秀滤镜之亮度调整

图像的亮度, 指的是图像像素的强度, 黑色为最暗, 白色为最亮, 在ios中黑色用0来表示, 白色用1来表示.一个像素, 基本上是用RGB三个颜色分量来表示的. R(0-1), G(0-1),B(0-1). 亮度调整有多种计算方法,效果并不完全相同,在颜色的表示方法中, HSL(L)表示法就是:色相(hue).饱和度(saturation).亮度(lightness),改变其中的L值就可以调整图象的亮度,但效果显得比较生硬. PhotoShop和GPUImage中采用的就是另外一种方法就是把图象

模仿美图秀秀拼图应用ios源码

模仿美图秀秀拼图应用源码,这个是模仿美图秀秀拼图应用源码,模拟美图秀秀拼图功能,支持图片自由拖动,添加边框,以及不规则图形的切割,也可以说是十分不错的拼图功能实现. <ignore_js_op> <ignore_js_op> <ignore_js_op> 详细说明:http://ios.662p.com/thread-2010-1-1.html

美图秀秀-美化图片之【特效】界面设计

本文是特效界面设计,在美图秀秀的特效模块主要是实现图片添加滤镜效果,界面挺炫的. 界面包含黑边和虚化按钮,4种类型的滤镜,每种类型又包含许多具体滤镜效果,当我们点击时候开始处理图片 1.加载图片 self.imageView = [[UIImageView alloc] initWithImage:self.image]; self.imageView.frame = CGRectMake(0, 0, WIDTH, HEIGHT - 130); self.imageView.contentMod

打造自己的“美图秀秀”

概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介绍:Quartz 2D绘制2D图形和Core Image中强大的滤镜功能. Quartz 2D 在iOS中常用的绘图框架就是Quartz 2D,Quartz 2D是Core Graphics框架的一部分,是一个强大的二维图像绘制引擎.Quartz 2D在UIKit中也有很好的封装和集成,我们日常开发时所用到的UIKit中的组件都是由Cor

美图秀秀团队新出的短视频应用「美拍」为何这么火?

这个世界有种畅销品叫作“美”它的载体通常是可视化的——图片和视频,美图这个团队从美图秀秀到美拍无不是抓住了这个需求,让人更容易生产更高质量的美.而且视频这种信息量更大的载体相对静止的图片更能让人产生“美”的体验,视频和图片不一样,不像instagram那样加个风格滤镜就能产生一个好的效果,而且要拍好一段视频远比照片要难的多,所以此前一些微视频软件简单的加个滤镜或一些水印并不能帮助用户比较简单的生产出有美感的视频.这点美拍做到了,你发现一段再无趣的视频套用模板后,音乐和剪切效果马上让视频脱胎换骨,

美图秀秀首页界面设计(一)

本文设计了美图秀秀官方版的界面,从中可以学到自定义View,自动布局,启动界面设置.代码有点凌乱,我在一步步改善. 项目中的图片资源均来自官方版的下载包中的图片(原始图片),这样我们可以通过模仿成功案例来学习iOS开发. 项目结构及介绍 category组中存放对类的扩展 Utiles中存放一些常用的代码 controller中存放viewController文件 network存放访问网络的工具类 3rd lib存放项目中使用到的第三方类库 views存放自定义视图 models存放数据类 i

强大的Core Image(教你做自己的美图秀秀))

iOS5新特性:强大的Core Image(教你做自己的美图秀秀)) iOS5给我们带来了很多很好很强大的功能和API.Core Image就是其中之一,它使我们很容易就能处理图片的各种效果,色彩啊,曝光啊,饱和度啊,变形啊神马的.可惜苹果一直没能完善官方文档,也没有推出示例代码,所以国内很多同学可能还没有开始使用.但国外的大神们已经证明这是个相当强悍的框架,不仅功能强大,而且可以直接使用GPU,效率奇高,甚至可以实时的对视频进行渲染.下面让我们来看看,如何具体使用它:首先你需要导入 CoreI