Giter Club home page Giter Club logo

ios-gpuimage-plus's Introduction

iOS-GPUImage-Plus

GPU accelerated filters for iOS based on OpenGL.

New feature: Face effects will be created with the ios11's VNSequenceRequestHandler & VNDetectFaceLandmarksRequest.

Android version: https://github.com/wysaid/android-gpuimage-plus

Abstract

  • This repo is open source now. You can use cge.framework in your project.

    1. You can add the cge.framework to your project, then add the code

    #import <cge/cge.h> //Everything is done.

    1. If you're using CocoaPods, add this to your Podfile:

    pod 'libCGE', :git => 'https://github.com/wysaid/ios-gpuimage-plus-pod.git'

    or with the newest version tag:

    pod 'libCGE', :git => 'https://github.com/wysaid/ios-gpuimage-plus-pod.git', :tag => '2.4.7'

    Dependencies: libc++, ImageIO.framework, MobileCoreServices.framework

    Note: The filters are written in C++, so you should change your source file extensions to "mm" if you want use all features. But it is not necessary when you're using the interface-headers just like the demo.

  • Hundreds of built-in filters are available in the demo. ๐Ÿ˜‹If you'd like to add your own filter, please take a look at the manual page. Or you can follow the demo code. The new custom filters should be written in C++.

  • To build the source code, you can use the xcode project in the 'library' folder.

Manual

1. Usage

Sample Code for doing a filter with UIImage

//Simply apply a filter to an UIImage.
- (void)viewDidLoad
{
    UIImage* srcImage = [UIImage imageNamed:@"test.jpg"];
    //HSL Adjust (hue: 0.02, saturation: -0.31, luminance: -0.17)
    //Please see the manual for more details.
    const char* ruleString = @"@adjust hsl 0.02 -0.31 -0.17";
    UIImage* resultImage = cgeFilterUIImage_MultipleEffects(srcImage, ruleString, 1.0f, nil);

    //Then the dstImage is applied with the filter.
    //It's so convenient, isn't it?
}

2. Custom Shader Filter

2.1 Write your own filter

Your filter must inherit CGEImageFilterInterfaceAbstract or its child class. Most of the filters are inherited from CGEImageFilterInterface because it has many useful functions.

// A simple customized filter to do a color reversal.
class MyCustomFilter : public CGE::CGEImageFilterInterface
{
public:
    
    bool init()
    {
        CGEConstString fragmentShaderString = CGE_SHADER_STRING_PRECISION_H
        (
        varying vec2 textureCoordinate;  //defined in 'g_vshDefaultWithoutTexCoord'
        uniform sampler2D inputImageTexture; // the same to above.

        void main()
        {
            vec4 src = texture2D(inputImageTexture, textureCoordinate);
            src.rgb = 1.0 - src.rgb;  //Simply reverse all channels.
            gl_FragColor = src;
        }
        );

        //m_program is defined in 'CGEImageFilterInterface'
        return m_program.initWithShaderStrings(g_vshDefaultWithoutTexCoord, s_fsh);
    }

    //void render2Texture(CGE::CGEImageHandlerInterface* handler, GLuint srcTexture, GLuint vertexBufferID)
    //{
    //  //Your own render functions here.
    //  //Do not override this function to use the CGEImageFilterInterface's.
    //}
};

Note: To add your own shader filter with c++. Please see the demo for further details.

2.2 Run your own filter

Please see this: https://github.com/wysaid/ios-gpuimage-plus/blob/master/library/filterLib/cgeCustomFilters.h#L34

3. Filter Rule String

En: https://github.com/wysaid/android-gpuimage-plus/wiki/Parsing-String-Rule-En

Ch: https://github.com/wysaid/android-gpuimage-plus/wiki/Parsing-String-Rule

Tool

Some utils are available for creating filters: https://github.com/wysaid/cge-tools

Tool

License

MIT License

Donate

Alipay:

Alipay

Paypal:

Paypal

ios-gpuimage-plus's People

Contributors

wysaid avatar

Watchers

James Cloos avatar blackcrystal avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.