關(guān)于制作GPUImage相機app的經(jīng)驗總結(jié)(一)

? 早在大二上學(xué)期初,就有獨立制作一款攝影類app的打算,但是那是時間不多能力不足也就擱淺了。后來中途接觸了類似于HUJI Poly Filmborn等優(yōu)秀攝影類app的時候心里那頭小鹿又開始亂撞,于是便開始了翻資料碼代碼的生活椅邓,以下是我運用GPUImage框架制作一款相機app(暫時還未上架)的過程遇到過的坑,希望對你有所幫助昧狮。


一景馁、關(guān)于GPUImage

官方描述:The GPUImage framework is a BSD-licensed iOS library that lets you apply GPU-accelerated filters and other effects to images, live camera video, and movies. In comparison to Core Image (part of iOS 5.0), GPUImage allows you to write your own custom filters, supports deployment to iOS 4.0, and has a simpler interface. However, it currently lacks some of the more advanced features of Core Image, such as facial detection.? ? GPUImage是使用GPU處理圖像的、他可以對圖片逗鸣、實時畫面合住、視頻進行處理。他允許你自定義濾鏡撒璧、支持iOS4.0透葛。然而,目前缺乏核心形象的一些更高級的功能,比如面部檢測。

GPUImage框架能排入ios框架排行榜的前十卿樱,是名副其實的ios老牌框架僚害,由于目前的直播以及美顏類相機app的大火,GPUImage框架也是制作這些app時的不二之選

二繁调、Q&A(問題與解決辦法)

Q1:linker command failed with exit code 1 (use -v to see invocation)問題的解決辦法

A1:cocopods導(dǎo)入后記得關(guān)閉整個項目然后從.xcworkspace文件進入


點擊此文件進入


Q2:制作模擬相機界面時如何隱去status bar讓主界面全屏顯示

A2: info.plist->Status bar is initially hidden-YES;View controller-based status bar appearance-NO;


Status bar is initially hidden-YES



View controller-based status bar appearance-NO



Q3:錯誤提示Failed to read file attributes for "/Users/zhangyunzhu/Downloads/XRWaterfallLayout-master/XRWaterfallLayoutDemo/XRWaterFallLayoutDemo/Assets.xcassets"

A3:刪除Assets.xcassets里面變紅的圖片文件



Q4:image.JPG找不到警告

A4: 由于大多數(shù)的圖片素材都都來源于網(wǎng)絡(luò)萨蚕,圖片格式結(jié)尾層次不齊如.jpg .JPG .svg .png等等,所以——注意大小寫? 注意大小寫 注意大小寫 重要的事情說三遍涉馁,哦對了门岔,還有間隔符也要看一下爱致,能刪則刪代碼里面imageNamed看得出區(qū)別烤送。


Q5:在從github上導(dǎo)入項目時候顯示如圖錯誤(很常見)


常見錯誤

A5:由于蘋果官方的限制每周提供給開發(fā)者的Bundle Identifier有限,建議在創(chuàng)建好新的工程并且順利運行之后保存一下BI碼供其他項目使用糠悯。

Q6:The app's Info.plist must contain an NSPhotoLibraryAddUsageDescription key with a string value explaining to the user how the app uses this data.問題

A6:info.plist-Photo Library Additions Usage Description-想訪問圖庫


info.plist

Q7:關(guān)于相機app拍攝后實際生成圖片的方向和拍攝時的的方向不一致的問題

A7:實際上iOS手機豎著拍出的照片與橫著拍出的照片對于拍攝者來說是一樣的帮坚,只不過豎著拍出的照片被添加了一個順時針旋轉(zhuǎn)90°的拍照方向妻往,所以顯示的時候,就變成了上下邊窄左右邊寬的狀態(tài)试和,其實也就是橫著拍的照片順時針旋轉(zhuǎn)90°而成的

比如這樣:


拍攝時所呈現(xiàn)的圖片方向
保存在相冊時的圖片方向

這里參考文章:https://www.cnblogs.com/gaoxiaoniu/p/5329834.html

- (UIImage *)normalizedImage {

? ? if(self.imageOrientation == UIImageOrientationUp)return self;


? ? UIGraphicsBeginImageContextWithOptions(self.size, NO, self.scale);

? ? [self drawInRect:(CGRect){0,0, self.size}];

? ? UIImage *normalizedImage = UIGraphicsGetImageFromCurrentImageContext();

? ? UIGraphicsEndImageContext();

? ? return normalizedImage;

}

代碼大致的意思是獲取所拍攝下來的照片的方位讯泣,如果方位不是UIImageOrientationUp,那么則將它重新繪制在畫板上阅悍,此時drawInRect會和系統(tǒng)圖庫一樣將他好渠。

這里多插一句,ios相機拍照時原始方向是home鍵向右的方向而并不是平時刷微信的home鍵朝下的方向节视。


方向參數(shù)圖

但是拳锚,這個方法可能會有畫質(zhì)上的損失這里有個更好的方法:

減小畫質(zhì)損失方法

來源:http://blog.csdn.net/iphone5solo/article/details/49623261

CGSize size? = {390, 430}; //新手注意:CGSize是一個結(jié)構(gòu)體類型,不是對象寻行,所以變量前不加'*'號;

? ? if([[UIScreen mainScreen] scale] == 2.0){? ? ? // @2x

? ? ? ? UIGraphicsBeginImageContextWithOptions(size, NO, 2.0);

? ? }else if([[UIScreen mainScreen] scale] == 3.0){ // @3x ( iPhone 6plus 霍掺、iPhone 6s plus)

? ? ? ? UIGraphicsBeginImageContextWithOptions(size, NO, 3.0);

? ? }else{

? ? ? ? UIGraphicsBeginImageContext(size);

? ? }

? ? // 繪制改變大小的圖片

? ? [imager drawInRect:CGRectMake(100, 0, size.width, size.height)];

? ? // 從當(dāng)前context中創(chuàng)建一個改變大小后的圖片

? ? UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();

? ? // 使當(dāng)前的context出堆棧

? ? UIGraphicsEndImageContext();

? ? // 返回新的改變大小后的圖片

? ? imager = scaledImage;

? ? //處理按鈕點擊事件

? ? ? ? [self.testbtn addTarget:self action:@selector(TouchDown)forControlEvents: UIControlEventTouchDownInside];?

? ? //處理按鈕松開狀態(tài)

? ? ? ? [self.testbtn addTarget:self action:@selector(TouchUp)forControlEvents: UIControlEventTouchUpInside | UIControlEventTouchUpOutside];?

But: 我在使用這個方法試圖矯正所拍攝照片的時候失敗了,可能的原因是我用GPUImageFilterGroup為其添加了一層濾鏡拌蜘,然后他的imageOrientation被初始化了杆烁,NSLog大法顯示無論我橫著拍還是正著拍都是UIImageOrientationRight,這個問題我還沒有深究简卧,如果有知道的小伙伴可以私信我簡書兔魂。

三、分享一些省時省力的小Tips

1.一個快速圖標(biāo)生成的網(wǎng)站举娩,以后圖標(biāo)適配不用再苦逼的用ps改分辨率了? ? ? http://www.atool.org/ios_logo.php

2.3d touch實現(xiàn)快拍功能:


1.在info里添加這一項

// 2.在appdelegate.m里寫處理點擊3D touch 方法的功能實現(xiàn)

-(void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {

? ? if ([shortcutItem.type isEqualToString:@"Camera"]) {

? ? ? ? NSLog(@"開拍");

? ? }

實現(xiàn)效果:

注意:如果你在為系統(tǒng)“分享”犯愁的話入热,我悄悄的告訴你,這個是上架后系統(tǒng)自帶的系統(tǒng)分享功能(心在滴血)

四晓铆、展望

下一篇可能(可能勺良,我說的是可能)會介紹一些關(guān)于顏色查找表lookup快速制作濾鏡、GPUImage2(Swift)以及項目demo和FILMMY相機的真容啦(???)?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末骄噪,一起剝皮案震驚了整個濱河市尚困,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌链蕊,老刑警劉巖事甜,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異滔韵,居然都是意外死亡逻谦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門陪蜻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來邦马,“玉大人,你說我怎么就攤上這事∽探” “怎么了邻悬?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長随闽。 經(jīng)常有香客問我父丰,道長,這世上最難降的妖魔是什么掘宪? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任蛾扇,我火速辦了婚禮,結(jié)果婚禮上魏滚,老公的妹妹穿的比我還像新娘屁桑。我一直安慰自己,他們只是感情好栏赴,可當(dāng)我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布蘑斧。 她就那樣靜靜地躺著,像睡著了一般须眷。 火紅的嫁衣襯著肌膚如雪竖瘾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天花颗,我揣著相機與錄音捕传,去河邊找鬼。 笑死扩劝,一個胖子當(dāng)著我的面吹牛庸论,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播棒呛,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼聂示,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了簇秒?” 一聲冷哼從身側(cè)響起鱼喉,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎趋观,沒想到半個月后扛禽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡皱坛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年编曼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剩辟。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡掐场,死狀恐怖往扔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情刻肄,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布融欧,位于F島的核電站敏弃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏噪馏。R本人自食惡果不足惜麦到,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望欠肾。 院中可真熱鬧瓶颠,春花似錦、人聲如沸刺桃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瑟慈。三九已至桃移,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間葛碧,已是汗流浹背借杰。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留进泼,地道東北人蔗衡。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像乳绕,于是被迫代替她去往敵國和親绞惦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,509評論 2 348

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

  • 1洋措、禁止手機睡眠[UIApplication sharedApplication].idleTimerDisabl...
    DingGa閱讀 1,116評論 1 6
  • 哪些人適合做中國式眾籌翩隧? 中國式眾籌作為一種創(chuàng)新型的組織形式和商業(yè)模式,其核心是一套方法論體系呻纹,具有很強的普適性堆生。...
    robot_liu閱讀 326評論 0 0
  • 對團隊而言是要先求同,在大目標(biāo)一致的基礎(chǔ)上雷酪,允許每個人有自己的特點淑仆。 對客戶而言是先存異,先挖掘每個人不同的需...
    禾呈人桀閱讀 452評論 1 2