iOS滤镜实现之Nashville【instagram】

Nashville是Instagram众多滤镜中最惊艳的一款,独特的奶昔色调赋予照片童话般的唯美感觉。适用范围:营造浪漫唯美的感觉。的确如此啊有2张输入图像
顶点着色有2组坐标NSString *const kGPUImageTwoInputTextureVertexShaderString = SHADER_STRING
(
 attribute vec4 position;//输入的坐标
 attribute vec4 inputTextureCoordinate;
 attribute vec4 inputTextureCoordinate2;
 //输出的坐标,与片段着色器
 varying vec2 textureCoordinate;
 varying vec2 textureCoordinate2;

 void main()
 {//告诉片段着色器,我在处理哪些像素
     gl_Position = position;
     textureCoordinate = inputTextureCoordinate.xy;
     textureCoordinate2 = inputTextureCoordinate2.xy;
 }
);
片段着色
NSString *const kFWNashvilleShaderString = SHADER_STRING
(
 precision lowp float;

 varying highp vec2 textureCoordinate;

 uniform sampler2D inputImageTexture;
 uniform sampler2D inputImageTexture2;

 void main()
 {
     vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
     texel = vec3(
                  texture2D(inputImageTexture2, vec2(texel.r, .16666)).r,
                  texture2D(inputImageTexture2, vec2(texel.g, .5)).g,
                  texture2D(inputImageTexture2, vec2(texel.b, .83333)).b);
     gl_FragColor = vec4(texel, 1.0);
 }
 );
 初始化
- (id)init
{
    if (!(self = [super init]))
    {
        return nil;
    }

    UIImage *image = [UIImage imageNamed:@"nashvilleMap.png"];

    imageSource = [[GPUImagePicture alloc] initWithImage:image];
    FWFilter1 *filter = [[FWFilter1 alloc] init];

    [self addFilter:filter];
    [imageSource addTarget:filter atTextureLocation:1];
    [imageSource processImage];

    self.initialFilters = [NSArray arrayWithObjects:filter, nil];
    self.terminalFilter = filter;

    return self;
}



//
//  FWNashvilleFilter.h
//  FWMeituApp
//
//  Created by hzkmn on 16/1/8.
//  Copyright © 2016年 ForrestWoo co,.ltd. All rights reserved.
//

#import "GPUImageTwoInputFilter.h"

@interface FWFilter1 : GPUImageTwoInputFilter

@end

@interface FWNashvilleFilter : GPUImageFilterGroup
{
    GPUImagePicture *imageSource ;
}

@end


//
//  FWNashvilleFilter.m
//  FWMeituApp
//
//  Created by hzkmn on 16/1/8.
//  Copyright © 2016年 ForrestWoo co,.ltd. All rights reserved.
//

#import "FWNashvilleFilter.h"

NSString *const kFWNashvilleShaderString = SHADER_STRING
(
 precision lowp float;

 varying highp vec2 textureCoordinate;

 uniform sampler2D inputImageTexture;
 uniform sampler2D inputImageTexture2;

 void main()
 {
     vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
     texel = vec3(
                  texture2D(inputImageTexture2, vec2(texel.r, .16666)).r,
                  texture2D(inputImageTexture2, vec2(texel.g, .5)).g,
                  texture2D(inputImageTexture2, vec2(texel.b, .83333)).b);
     gl_FragColor = vec4(texel, 1.0);
 }
 );

@implementation FWFilter1

- (id)init;
{
    if (!(self = [super initWithFragmentShaderFromString:kFWNashvilleShaderString]))
    {
        return nil;
    }

    return self;
}

@end

@implementation FWNashvilleFilter

- (id)init
{
    if (!(self = [super init]))
    {
        return nil;
    }

    UIImage *image = [UIImage imageNamed:@"nashvilleMap.png"];

    imageSource = [[GPUImagePicture alloc] initWithImage:image];
    FWFilter1 *filter = [[FWFilter1 alloc] init];

    [self addFilter:filter];
    [imageSource addTarget:filter atTextureLocation:1];
    [imageSource processImage];

    self.initialFilters = [NSArray arrayWithObjects:filter, nil];
    self.terminalFilter = filter;

    return self;
}

@end

原图

效果图

完整项目代码查看我在github

我们再来看几组效果

  

 
时间: 2024-12-16 02:41:26

iOS滤镜实现之Nashville【instagram】的相关文章

IOS滤镜

IOS 自带coreImage CIFilter 共有100多种滤镜效果,官方只介绍了一种,找不到中文介绍,下面是其中一部分中文介绍  CIAdditionCompositing     //影像合成 CIAffineTransform           //仿射变换 CICheckerboardGenerator       //棋盘发生器 CIColorBlendMode              //CIColor混合模式 CIColorBurnBlendMode          //

iOS滤镜 和 ios6中的CoreImage技术

Core Image是一个很强大的框架. 它可以让你简单地应用各种滤镜来处理图像,比如修改鲜艳程度, 色泽, 或者曝光. 它利用GPU(或者CPU,取决于客户)来非常快速.甚至实时地处理图像数据和视频的帧. 多个Core Image滤镜可以叠加在一起,从而可以一次性地产生多重滤镜效果.这种多重滤镜的优点在于它可以生成一个改进的滤镜,从而一次性的处理图像达到目标效果,而不是对同一个图像顺序地多次应用单个滤镜.每一个滤镜都有属于它自己的参数.这些参数和滤镜信息,比如功能.输入参数等都可以通过程序来查

图像滤镜艺术---Photoshop实现Instagram之Nashville滤镜

本文继续介绍使用PS来实现Instagram中的Nashville滤镜特效,有人说这个没什么用,直接用INSTAGRAM就可以了,干嘛用PS,问一下,PS可以处理单反高清照片,Instagram可以么?呵呵,开个玩笑,下面进入正题. 先看效果图: 接着是PS实现,这里还是英文的,不过有图示,不懂英文也没关系呵呵,资料来自网络搜集,所以本人也懒得翻译了. 1. To mimic the soft purple tint of the Nashville filter, open up the Le

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

LOMO追求鲜艳色彩,随意.自由的态度,是一种经常使用的滤镜,今天介绍一下iOS 中LOMO滤镜的实现 首先它有3张输入图像 1.我们要处理的图像.即我们要应用LOMO滤镜的图像 2 3 在gpuimage中多张输入图像的滤镜需要自己写.在这里我参照本身提供的GPUImageTwoInputFilter,自己写了GPUImageThreeInputFilter,用于接收3张输入图像的滤镜.它们都是通过滤镜组的继承来实现,多重滤镜. 片段着色器 NSString *const kFWLomofiS

图像滤镜艺术---Photoshop实现Instagram之Mayyair滤镜效果

本文介绍一下如何使用Photoshop来实现Instagram中的Mayfair滤镜的效果. 以上就是这个滤镜实现的全过程,这个过程可以完全使用程序实现的,如果大家想要使用程序实现,这里我可以 版权声明:本文为博主原创文章,未经博主允许不得转载.

图像滤镜艺术---Photoshop实现Instagram Amaro滤镜特效

本文是我收集的一些使用Photoshop来实现Instagram滤镜的一些内容,在这里跟大家分享一下,这些效果是完全可以使用程序实现的,这个感兴趣的可以使用ZPHOTOENGINE库来实现,这个PS算法库的下载地址:点击打开链接 下面开始介绍Amaro滤镜实现的内容,这些内容是英文版的,对于不懂英文的,直接看PS操作图即可. 1. Amaro 1. First, increase the brightness and contrast of your picture. Do this by go

Android Animation学习 实现 IOS 滤镜退出动画

IOS的用户体验做的很好,其中一点很重要的地方就是动画效果. 最近在学习Android的Animation,简单实现了一个IOS相机滤镜退出的动画: 布局文件:activity_animation_demo.xml  布局未考虑各个分辨率,只是为了实现动画逻辑,(代码测试是在720P分辨率的手机上) 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools=

iOS滤镜 图片处理

摘要:本文结合实例详解了OS X和iOS图像处理框架Core Image的使用,如何通过Core Image来创建和使用iOS的内置滤镜,非常适合初学者学习.虽然示例代码是用Swift写的iOS程序,不过实现概念很容易转换到Objective-C和OS X. 这篇文章会为初学者介绍一下Core Image,一个OS X和iOS的图像处理框架. 如果你想跟着本文中的代码学习,你可以在GitHub上下载示例工程.示例工程是一个iOS应用程序,列出了系统提供的大量图像滤镜以供选择,并提供了一个用户界面

iOS滤镜功能

一.iOS自带滤镜 1.CoreImage 使用苹果自带的CoreImage框架对图片进行处理,用CoreImage框架里的CIFilter对图片进行滤镜处理, 首先我们应该了解下CoreImage框架能够对图像进行那些处理和拥有哪些特效. 苹果给我们提供了将近200中滤镜效果 // 这里我们可以看到总共有多少种滤镜 NSArray *filterNames = [CIFilter filterNamesInCategory:@"CICategoryBuiltIn"]; NSLog(@