图片处理

图片处理

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];

你可能感兴趣的:(图片处理)