【iOS開發(fā)】制作一個簡易的濾鏡相機(四)

上一篇我們實現(xiàn)了拍照功能。接下來我們可以加上貼紙功能熏纯。貼紙不是簡單的加一個Image View(不然這篇文章沒什么好寫了~),我們需要把加在攝像頭上的貼紙在錄像或拍照的時候一起加到幀畫面上掺涛。

  1. 在.h文件中添加這次要用到的三個成員變量

     UIImage *_overlayImage;
     CGRect _overlayRect;
     CGColorSpaceRef _colorSpace;
    
  2. 在.m文件viewDidLoad中最后一行之后加上:

     _colorSpace = CGColorSpaceCreateDeviceRGB();
    
     // 7. Setup overlay image
     _overlayImage = [UIImage imageNamed:@"image"];
     _overlayRect = CGRectMake(-_overlayImage.size.width / 2.f,
                              -_overlayImage.size.height / 2.f,
                              _overlayImage.size.width,
                              _overlayImage.size.height);
    

不要忘記找一張圖拖入工程中巴席。
_colorSpace的作用在willOutputSampleBuffer:的最后會用到。

  1. _colorSpace需要手動釋放扭倾,把釋放動作放在dealloc方法中:

     - (void)dealloc {
         CGColorSpaceRelease(_colorSpace);
     }
    
  2. 到willOutputSampleBuffer:中淀零,先把上次的第一段代碼注釋掉,不然在不進行拍照的情況下膛壹,這個方法走不下去驾中。

  3. 到第三段代碼上方,UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();之前的一行中插入以下代碼:

     // draw overlay image
     CGContextRotateCTM(context, M_PI_2);
     CGContextTranslateCTM(context, _sourceRect.size.height / 2.f, -_sourceRect.size.width / 2.f);
     CGContextDrawImage(context, _overlayRect, _overlayImage.CGImage);
    

作用是把畫布調(diào)整一下坐標系模聋,然后把貼圖畫上去肩民。

  1. 到了最關(guān)鍵的步驟了。做完對幀畫面的一系列處理以后撬槽,要寫回image buffer里面此改。我們可以用CIContext的渲染方法來實現(xiàn)。到willOutputSampleBuffer:最后一行代碼
    CVPixelBufferUnlockBaseAddress(imageBuffer, 0);的上方插入以下代碼:

     CIImage *filteredImage = [[CIImage alloc] initWithCGImage:resultImage.CGImage];
     [_ciContext render:filteredImage
        toCVPixelBuffer:imageBuffer
                 bounds:_sourceRect
             colorSpace:_colorSpace];
    

這里要注意初始化CIImage的時候不能直接用UIImage侄柔,會返回空值共啃。至于為什么……我也不明白占调。不過既然可以用CGImage初始化,也沒有什么大問題了移剪。

  1. 看下效果吧究珊。(這個貼圖是在吐槽的是某國人名字又長又沒有規(guī)律。)


    圖片發(fā)自簡書App

    好了纵苛,又一個主要功能點完成剿涮。下回再見。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末攻人,一起剝皮案震驚了整個濱河市取试,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌怀吻,老刑警劉巖瞬浓,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蓬坡,居然都是意外死亡猿棉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門屑咳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萨赁,“玉大人,你說我怎么就攤上這事兆龙≌人” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵紫皇,是天一觀的道長掂林。 經(jīng)常有香客問我,道長坝橡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任精置,我火速辦了婚禮计寇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘脂倦。我一直安慰自己番宁,他們只是感情好,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布赖阻。 她就那樣靜靜地躺著蝶押,像睡著了一般。 火紅的嫁衣襯著肌膚如雪火欧。 梳的紋絲不亂的頭發(fā)上棋电,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天茎截,我揣著相機與錄音,去河邊找鬼赶盔。 笑死企锌,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的于未。 我是一名探鬼主播撕攒,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼烘浦!你這毒婦竟也來了抖坪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤闷叉,失蹤者是張志新(化名)和其女友劉穎擦俐,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體片习,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡捌肴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了藕咏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片状知。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖孽查,靈堂內(nèi)的尸體忽然破棺而出饥悴,到底是詐尸還是另有隱情,我是刑警寧澤盲再,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布西设,位于F島的核電站,受9級特大地震影響答朋,放射性物質(zhì)發(fā)生泄漏贷揽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一梦碗、第九天 我趴在偏房一處隱蔽的房頂上張望禽绪。 院中可真熱鬧,春花似錦洪规、人聲如沸印屁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雄人。三九已至,卻和暖如春念赶,著一層夾襖步出監(jiān)牢的瞬間础钠,已是汗流浹背恰力。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留珍坊,地道東北人牺勾。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像阵漏,于是被迫代替她去往敵國和親驻民。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容