zoukankan      html  css  js  c++  java
  • GUPImage的使用

    参考:Gaos的BLOG

    1 下载源码:

     https://github.com/BradLarson/GPUImage

    2编译;打开iOS的项目文件;build真机

    成果物是一个静态库;注意github上还提供了很多example;

    在这里并没有生成头文件usr(头文件,demo中要用的一个集合)文件夹,我们可以编译的时候选择编译framework,他会生成一个头文件夹,里边头文件基本是全的【这样就不用你一个个的收集头文件放到demo里了,他给你放在一起了】(你在demo中需要引入的头文件);

    然后把静态库和头文件放到你的demo里;

    demo-build setting ---search paths --library search paths 加上静态库和头文件的路径;

    demo中引入:

    #import "GPUImage.h";使用如下;下边是一个使用亮度滤镜的demo;你可以自己决定使用哪个过滤器;里边就是一个滤镜链条处理

      UIImage * orangeimage = [UIImage imageNamed:@"tupian.PNG"];
        
        GPUImageBrightnessFilter* shineFilter = [[GPUImageBrightnessFilter alloc]init];
        
        shineFilter.brightness = -0.7f;
        
        [shineFilter forceProcessingAtSize:orangeimage.size];
        
        [shineFilter useNextFrameForImageCapture];//没有这句话显示不了
        
        GPUImagePicture* pic = [[GPUImagePicture alloc]initWithImage:orangeimage];
        
        [pic addTarget:shineFilter];
        
        [pic processImage];
        
        UIImage * afterPic = [shineFilter imageFromCurrentFramebuffer];
        
        UIImageView* subview = [[UIImageView alloc]initWithImage:afterPic];
        subview.frame = CGRectMake(0, 0, _FilterView.bounds.size.width, _FilterView.bounds.size.height);
        [_FilterView addSubview:subview];

     例1:

    //基于阈值的边缘检测,适用于灰度图
    
     UIImage * orangeimage = [UIImage imageNamed:@"lian.png"];
        
        GPUImageThresholdEdgeDetectionFilter* shineFilter = [[GPUImageThresholdEdgeDetectionFilter alloc]init];
        
        shineFilter.threshold = 0.2;
     

    边缘检测结果:(受显示窗口影响,图像有一点形变;左原图,右边缘检测)

     例2:水晶球,设置个球心

    UIImage * orangeimage = [UIImage imageNamed:@"lian.png"];
        
        GPUImageGlassSphereFilter* shineFilter = [[GPUImageGlassSphereFilter alloc]init];
        
        shineFilter.center = CGPointMake(0.5f, 0.5f);

    例三:浮雕

    UIImage * orangeimage = [UIImage imageNamed:@"lian.png"];
        
        GPUImageEmbossFilter* shineFilter = [[GPUImageEmbossFilter alloc]init];
        
        shineFilter.intensity = 2.0;//强度

     例4:哈哈镜:

     UIImage * orangeimage = [UIImage imageNamed:@"lian.png"];
        
        GPUImageStretchDistortionFilter* shineFilter = [[GPUImageStretchDistortionFilter alloc]init];
        
        shineFilter.center =CGPointMake(0.5, 0.3);
     

    例5:卡通;

     UIImage * orangeimage = [UIImage imageNamed:@"lian.png"];
        
        GPUImageToonFilter* shineFilter = [[GPUImageToonFilter alloc]init];
        
        shineFilter.quantizationLevels = 8.0;//量化等级
        shineFilter.threshold = 0.3;

    还有很多效果,可以使用。。。。。。。。

  • 相关阅读:
    Codeforces 1255B Fridge Lockers
    Codeforces 1255A Changing Volume
    Codeforces 1255A Changing Volume
    leetcode 112. 路径总和
    leetcode 129. 求根到叶子节点数字之和
    leetcode 404. 左叶子之和
    leetcode 104. 二叉树的最大深度
    leetcode 235. 二叉搜索树的最近公共祖先
    450. Delete Node in a BST
    树的c++实现--建立一棵树
  • 原文地址:https://www.cnblogs.com/8335IT/p/15091900.html
Copyright © 2011-2022 走看看