圖片處理

圖片處理

1, GPUImagePicture

從名稱就可以知道GPUImagePicture是GPUImage框架中處理與圖片相關(guān)的類,它的主要作用是將UIImage或CGImage轉(zhuǎn)化為紋理對(duì)象。GPUImagePicture繼承自GPUImageOutput,從而可以知道它能夠作為輸出,由于它沒有實(shí)現(xiàn)GPUImageInput協(xié)議,不能處理輸入。因此,常常作為響應(yīng)鏈源。

屬性介紹:

pixelSizeOfImage 圖像的像素大小。
hasProcessedImage 圖像是否已處理。
imageUpdateSemaphore 圖像處理的GCD信號(hào)量。

初始化方法:

- (id)initWithURL:(NSURL *)url
使用指定url的圖片來初始化GPUImagePicture

- (id)initWithImage:(UIImage *)newImageSource
使用指定的UIImage對(duì)象來初始化GPUImagePicture

- (id)initWithCGImage:(CGImageRef)newImageSource
使用指定的CGImageRef對(duì)象來初始化GPUImagePicture

- (id)initWithImage:(UIImage *)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput
使用指定的UIImage對(duì)象來初始化GPUImagePicture,是否按比例調(diào)整輸入圖像的尺寸

操作API

- (void)processImage;
進(jìn)行圖像處理實(shí)際操作。
- (CGSize)outputImageSize;
輸出image的大小

- (BOOL)processImageWithCompletionHandler:(void (^)(void))completion
進(jìn)行圖像處理實(shí)際的操作,completion為當(dāng)處理結(jié)束執(zhí)行的操作。

GPUImageView:UIView

從名稱就可以知道GPUImageView是GPUImage框架中顯示圖片相關(guān)的類。GPUImageView實(shí)現(xiàn)了GPUImageInput協(xié)議,從而可以知道它能夠接受GPUImageFramebuffer的輸入。因此,常常作為響應(yīng)鏈的終端節(jié)點(diǎn),用于顯示處理后的幀緩存。

初始化:

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

方法列表:

// 設(shè)置背景顏色
- (void)setBackgroundColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent;

// 該方法未實(shí)現(xiàn)
- (void)setCurrentlyReceivingMonochromeInput:(BOOL)newValue;

屬性:

GPUImageFillModeType fillMode圖像的填充模式。
sizeInPixels 像素區(qū)域大小。
enabled  可交互

GPUImageUIElement UI渲染類

與GPUImagePicture類似可以作為響應(yīng)鏈源。與GPUImagePicture不同的是,它的數(shù)據(jù)不是來自圖片,而是來自于UIView或CALayer的渲染結(jié)果,類似于對(duì)UIView或CALayer截圖。GPUImageUIElement繼承自GPUImageOutput,從而可以知道它能夠作為輸出,由于它沒有實(shí)現(xiàn)GPUImageInput協(xié)議,不能處理輸入

初始化

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

其他方法:

// 獲取像素大小
- (CGSize)layerSizeInPixels;
// 更新方法
- (void)update;
// 使用當(dāng)前時(shí)間的更新方法
- (void)updateUsingCurrentTime;
// 帶時(shí)間的更新方法
- (void)updateWithTimestamp:(CMTime)frameTime;

例子: 這個(gè)后面用到會(huì)補(bǔ)充

   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];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 回顧 解析(一)解析(二)解析(三)這次介紹的GPUImageContext、GPUImageFramebuffe...
    落影l(fā)oyinglin閱讀 8,977評(píng)論 9 28
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,070評(píng)論 4 61
  • 前言現(xiàn)在很多的APP當(dāng)中選擇圖片都會(huì)帶有圖片處理效果,一些類似于美圖,PS的功能,其實(shí)在iOS中系統(tǒng)內(nèi)部也有這樣一...
    清溪丷閱讀 7,035評(píng)論 3 42
  • 原文地址: Essential image optimization 1.每個(gè)人都應(yīng)當(dāng)壓縮圖片 在Mac下可以使用...
    JamesSawyer閱讀 492評(píng)論 0 0
  • 現(xiàn)在的我越來越現(xiàn)實(shí),任重道遠(yuǎn),時(shí)間太寶貴,斷舍離,才能精!~物品如此,事情如此,人,亦如此! 跟人交往,與人說話,...
    蝶戀谷谷主閱讀 230評(píng)論 0 0

友情鏈接更多精彩內(nèi)容