美文网首页
图片处理

图片处理

作者: 874b526fa570 | 来源:发表于2017-11-06 10:02 被阅读30次

    图片处理

    1, GPUImagePicture

    从名称就可以知道GPUImagePicture是GPUImage框架中处理与图片相关的类,它的主要作用是将UIImage或CGImage转化为纹理对象。GPUImagePicture继承自GPUImageOutput,从而可以知道它能够作为输出,由于它没有实现GPUImageInput协议,不能处理输入。因此,常常作为响应链源。

    属性介绍:

    pixelSizeOfImage 图像的像素大小。
    hasProcessedImage 图像是否已处理。
    imageUpdateSemaphore 图像处理的GCD信号量。
    

    初始化方法:

    - (id)initWithURL:(NSURL *)url
    使用指定url的图片来初始化GPUImagePicture
    
    - (id)initWithImage:(UIImage *)newImageSource
    使用指定的UIImage对象来初始化GPUImagePicture
    
    - (id)initWithCGImage:(CGImageRef)newImageSource
    使用指定的CGImageRef对象来初始化GPUImagePicture
    
    - (id)initWithImage:(UIImage *)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput
    使用指定的UIImage对象来初始化GPUImagePicture,是否按比例调整输入图像的尺寸
    
    

    操作API

    - (void)processImage;
    进行图像处理实际操作。
    - (CGSize)outputImageSize;
    输出image的大小
    
    - (BOOL)processImageWithCompletionHandler:(void (^)(void))completion
    进行图像处理实际的操作,completion为当处理结束执行的操作。
    
    

    GPUImageView:UIView

    从名称就可以知道GPUImageView是GPUImage框架中显示图片相关的类。GPUImageView实现了GPUImageInput协议,从而可以知道它能够接受GPUImageFramebuffer的输入。因此,常常作为响应链的终端节点,用于显示处理后的帧缓存。

    初始化:

    - (id)initWithFrame:(CGRect)frame;
    -(id)initWithCoder:(NSCoder *)coder;
    

    方法列表:

    // 设置背景颜色
    - (void)setBackgroundColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent;
    
    // 该方法未实现
    - (void)setCurrentlyReceivingMonochromeInput:(BOOL)newValue;
    

    属性:

    GPUImageFillModeType fillMode图像的填充模式。
    sizeInPixels 像素区域大小。
    enabled  可交互
    

    GPUImageUIElement UI渲染类

    与GPUImagePicture类似可以作为响应链源。与GPUImagePicture不同的是,它的数据不是来自图片,而是来自于UIView或CALayer的渲染结果,类似于对UIView或CALayer截图。GPUImageUIElement继承自GPUImageOutput,从而可以知道它能够作为输出,由于它没有实现GPUImageInput协议,不能处理输入

    初始化

    - (id)initWithView:(UIView *)inputView;
    - (id)initWithLayer:(CALayer *)inputLayer;
    

    其他方法:

    // 获取像素大小
    - (CGSize)layerSizeInPixels;
    // 更新方法
    - (void)update;
    // 使用当前时间的更新方法
    - (void)updateUsingCurrentTime;
    // 带时间的更新方法
    - (void)updateWithTimestamp:(CMTime)frameTime;
    

    例子: 这个后面用到会补充

       GPUImageView *gpImage = [[GPUImageView alloc]initWithFrame: CGRectMake(0, 0, 300, 300)];
        self.view = gpImage;
        gpImage.backgroundColor =[UIColor grayColor];
        GPUImageUIElement *element = [[GPUImageUIElement alloc] initWithView:gpImage];
        GPUImageWhiteBalanceFilter *filter = [[GPUImageWhiteBalanceFilter alloc] init];
        [element addTarget:filter];
        [filter addTarget:gpImage];
        [filter useNextFrameForImageCapture];
        [element update];  GPUImageView *gpImage = [[GPUImageView alloc]initWithFrame: CGRectMake(0, 0, 300, 300)];
        self.view = gpImage;
        gpImage.backgroundColor =[UIColor grayColor];
        GPUImageUIElement *element = [[GPUImageUIElement alloc] initWithView:gpImage];
        GPUImageWhiteBalanceFilter *filter = [[GPUImageWhiteBalanceFilter alloc] init];
        [element addTarget:filter];
        [filter addTarget:gpImage];
        [filter useNextFrameForImageCapture];
        [element update];
    

    相关文章

      网友评论

          本文标题:图片处理

          本文链接:https://www.haomeiwen.com/subject/gnikmxtx.html