iOS二十種超酷時尚藝術濾鏡彙總【附源碼】

本文總結了20種ios濾鏡都是基於GPUImage的,有3種濾鏡是GPUImage庫中包含的,還有17種是Instagram中的經典濾鏡,集成在一個項目中。使用GPUImage可以非常容易創建我們自己的濾鏡效果總會有你想要的效果吧。在文章下面附源碼下載

相信你也在使用濾鏡吧,今天就讓你見識一下濾鏡實現其實也不是一件特別難的技術,下面附一些效果圖。由於幾種濾鏡最主要的實現是一段片段着色程序,所以會進行展示

Amaro濾鏡,通過FWAmaroFilter類來實現。它是Instagram應用中的經典濾鏡之一,適用於任何色調暗沉的照片

NSString *const kFWAmaroShaderString = SHADER_STRING
(
 precision lowp float;

 varying highp vec2 textureCoordinate;

 uniform sampler2D inputImageTexture;
 uniform sampler2D inputImageTexture2; //blowout;
 uniform sampler2D inputImageTexture3; //overlay;
 uniform sampler2D inputImageTexture4; //map

 void main()
 {

     vec4 texel = texture2D(inputImageTexture, textureCoordinate);
     vec3 bbTexel = texture2D(inputImageTexture2, textureCoordinate).rgb;

     texel.r = texture2D(inputImageTexture3, vec2(bbTexel.r, texel.r)).r;
     texel.g = texture2D(inputImageTexture3, vec2(bbTexel.g, texel.g)).g;
     texel.b = texture2D(inputImageTexture3, vec2(bbTexel.b, texel.b)).b;

     vec4 mapped;
     mapped.r = texture2D(inputImageTexture4, vec2(texel.r, .16666)).r;
     mapped.g = texture2D(inputImageTexture4, vec2(texel.g, .5)).g;
     mapped.b = texture2D(inputImageTexture4, vec2(texel.b, .83333)).b;
     mapped.a = 1.0;

     gl_FragColor = mapped;
 }
 );

amaro
效果圖
這裏寫圖片描述
這裏寫圖片描述

SoftElegance濾鏡,通過GPUImageSoftEleganceFilter來實現。復古型濾鏡,感覺像舊上海灘~~~
這裏寫圖片描述

MissEtikate濾鏡
這裏寫圖片描述

Nashville濾鏡,Nashville是Instagram衆多濾鏡中最驚豔的一款,獨特的奶昔色調賦予照片童話般的唯美感覺。適用範圍:營造浪漫唯美的感覺。
這裏寫圖片描述

LordKelvin濾鏡。

這裏寫圖片描述
Amatorka濾鏡
這裏寫圖片描述

Rise濾鏡,可以使人像皮膚得到很好的調整。

這裏寫圖片描述
Hudson濾鏡。
這裏寫圖片描述

XproII濾鏡

這裏寫圖片描述
1977濾鏡
這裏寫圖片描述

Valencia濾鏡
這裏寫圖片描述

Walden濾鏡

這裏寫圖片描述
Lomofi濾鏡

這裏寫圖片描述
Inkwell濾鏡

這裏寫圖片描述
Sierra濾鏡

這裏寫圖片描述
Earlybird濾鏡

這裏寫圖片描述
Sutro濾鏡
這裏寫圖片描述

Toaster濾鏡
這裏寫圖片描述

Brannan濾鏡
這裏寫圖片描述

Hefe濾鏡

這裏寫圖片描述
實現【以FWNashvilleFilter爲例】

創建濾鏡類 ,我將所有濾鏡類都繼承自GPUImageFilterGroup類,它允許我們所創建的類混合其他濾鏡。它其實是向FWFilter1類中添加需要的輸入紋理圖片。

@interface FWNashvilleFilter : GPUImageFilterGroup
{
    GPUImagePicture *imageSource ;
}

創建濾鏡效果 ,該類主要實現濾鏡的效果,包含一個片段着色程序。它是濾鏡效果的具體實現

@interface FWFilter1 : GPUImageTwoInputFilter

@end
應用

+ (UIImage *)applyNashvilleFilter:(UIImage *)image
{
    FWNashvilleFilter *filter = [[FWNashvilleFilter alloc] init];
    [filter forceProcessingAtSize:image.size];
    GPUImagePicture *pic = [[GPUImagePicture alloc] initWithImage:image];
    [pic addTarget:filter];

    [pic processImage];
    [filter useNextFrameForImageCapture];
    return [filter imageFromCurrentFramebuffer];
}

相關鏈接:

下載項目Demo

原文鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章