图片处理
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];
网友评论