訪問系統(tǒng)相冊

在iOS中要拍照和錄制視頻最簡單的方式就是調(diào)用UIImagePickerController赚瘦,UIImagePickerController繼承與UINavigationController,需要使用代理方法時需要同時遵守這兩個協(xié)議报咳,以前可能比較多的是使用UIImagePickerController來選擇相冊圖片或者拍攝圖片椎咧,其實它的功能還能用來拍攝視頻玖详。

使用UIImagePickerController拍照或者拍視頻主要以下幾個步驟:

創(chuàng)建一個全局的UIImagePickerController對象。

指定UIImagePickerController的來源sourceType,是來自UIImagePickerControllerSourceTypeCamera相機蟋座,還是來自UIImagePickerControllerSourceTypePhotoLibrary相冊劳澄。

然后是設(shè)置mediaTypes媒體類型,這是錄制視頻必須設(shè)置的選項蜈七,默認情況下是kUTTypeImage(注意:mediaTypes的設(shè)置是在MobileCoreServices框架下)秒拔,同還可以設(shè)置一些其他視頻相關(guān)的屬性,例如:videoQuality視頻的質(zhì)量飒硅、videoMaximumDuration視頻的最大錄制時長(默認為10s)砂缩,cameraDevice攝像頭的方向(默認為后置相機)。

指定相機的捕獲模式cameraCaptureMode三娩,設(shè)置mediaTypes后在設(shè)置捕獲模式庵芭,注意的是捕獲模式需要在相機來源sourceType為相機時設(shè)置,否則會出現(xiàn)crash雀监。

適時的展示UIImagePickerController双吆,然后在相應(yīng)的代理方法保存和獲取圖片或視頻。

下面還是上代碼吧会前,更加清晰明了...

首先需要導(dǎo)入以下用到的幾個頭文件好乐,同時遵守兩個代理方法

#import"ViewController.h"#import#import#import@interfaceViewController(){UIImagePickerController*_imagePickerController;}

創(chuàng)建UIImagePickerController對象

- (void)viewDidLoad {? ? [superviewDidLoad];// Do any additional setup after loading the view, typically from a nib_imagePickerController = [[UIImagePickerControlleralloc] init];? ? _imagePickerController.delegate =self;? ? _imagePickerController.modalTransitionStyle =UIModalTransitionStyleFlipHorizontal;? ? _imagePickerController.allowsEditing =YES;

從攝像頭獲取圖片或視頻

#pragma mark 從攝像頭獲取圖片或視頻- (void)selectImageFromCamera{? ? _imagePickerController.sourceType =UIImagePickerControllerSourceTypeCamera;//錄制視頻時長,默認10s_imagePickerController.videoMaximumDuration =15;//相機類型(拍照瓦宜、錄像...)字符串需要做相應(yīng)的類型轉(zhuǎn)換_imagePickerController.mediaTypes = @[(NSString*)kUTTypeMovie,(NSString*)kUTTypeImage];//視頻上傳質(zhì)量//UIImagePickerControllerQualityTypeHigh高清//UIImagePickerControllerQualityTypeMedium中等質(zhì)量//UIImagePickerControllerQualityTypeLow低質(zhì)量//UIImagePickerControllerQualityType640x480_imagePickerController.videoQuality =UIImagePickerControllerQualityTypeHigh;//設(shè)置攝像頭模式(拍照蔚万,錄制視頻)為錄像模式_imagePickerController.cameraCaptureMode =UIImagePickerControllerCameraCaptureModeVideo;? ? [selfpresentViewController:_imagePickerController animated:YEScompletion:nil];}

從相冊獲取圖片或視頻

#pragma mark 從相冊獲取圖片或視頻- (void)selectImageFromAlbum{//NSLog(@"相冊");_imagePickerController.sourceType =UIImagePickerControllerSourceTypePhotoLibrary;? ? ? ? [selfpresentViewController:_imagePickerController animated:YEScompletion:nil];}

在imagePickerController:didFinishPickingMediaWithInfo:代理方法中處理得到的資源,保存本地并上傳...

#pragma mark UIImagePickerControllerDelegate//該代理方法僅適用于只選取圖片時- (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingImage:(UIImage*)image editingInfo:(nullableNSDictionary *)editingInfo {NSLog(@"選擇完畢----image:%@-----info:%@",image,editingInfo);}

//適用獲取所有媒體資源临庇,只需判斷資源類型- (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{NSString*mediaType=[info objectForKey:UIImagePickerControllerMediaType];//判斷資源類型if([mediaType isEqualToString:(NSString*)kUTTypeImage]){//如果是圖片self.imageView.image = info[UIImagePickerControllerEditedImage];//壓縮圖片NSData*fileData =UIImageJPEGRepresentation(self.imageView.image,1.0);//保存圖片至相冊UIImageWriteToSavedPhotosAlbum(self.imageView.image,self,@selector(image:didFinishSavingWithError:contextInfo:),NULL);//上傳圖片[selfuploadImageWithData:fileData];? ? ? ? ? ? }else{//如果是視頻NSURL*url = info[UIImagePickerControllerMediaURL];//播放視頻_moviePlayer.contentURL = url;? ? ? ? [_moviePlayer play];//保存視頻至相冊(異步線程)NSString*urlStr = [url path];dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{if(UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(urlStr)) {UISaveVideoAtPathToSavedPhotosAlbum(urlStr,self,@selector(video:didFinishSavingWithError:contextInfo:),nil);? ? ? ? ? ? }? ? ? ? });NSData*videoData = [NSDatadataWithContentsOfURL:url];//視頻上傳[selfuploadVideoWithData:videoData];? ? }? ? [selfdismissViewControllerAnimated:YEScompletion:nil];}

圖片和視頻保存完畢后的回調(diào)

#pragma mark 圖片保存完畢的回調(diào)- (void) image: (UIImage*) image didFinishSavingWithError:(NSError*) error contextInfo: (void*)contextInf{? ? }#pragma mark 視頻保存完畢的回調(diào)- (void)video:(NSString*)videoPath didFinishSavingWithError:(NSError*)error contextInfo:(void*)contextInf{if(error) {NSLog(@"保存視頻過程中發(fā)生錯誤反璃,錯誤信息:%@",error.localizedDescription);? ? }else{NSLog(@"視頻保存成功.");? ? }}

以上僅是簡單功能的實現(xiàn),還有例如切換前后攝像頭假夺、閃光燈設(shè)置淮蜈、對焦、曝光模式等更多功能...

作者:Shelin

鏈接:http://www.reibang.com/p/e70a184d1f32

來源:簡書

著作權(quán)歸作者所有已卷。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)梧田,非商業(yè)轉(zhuǎn)載請注明出處。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末悼尾,一起剝皮案震驚了整個濱河市柿扣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闺魏,老刑警劉巖未状,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異析桥,居然都是意外死亡司草,警方通過查閱死者的電腦和手機艰垂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來埋虹,“玉大人猜憎,你說我怎么就攤上這事∩危” “怎么了胰柑?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長爬泥。 經(jīng)常有香客問我柬讨,道長,這世上最難降的妖魔是什么袍啡? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任踩官,我火速辦了婚禮,結(jié)果婚禮上境输,老公的妹妹穿的比我還像新娘蔗牡。我一直安慰自己,他們只是感情好嗅剖,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布辩越。 她就那樣靜靜地躺著,像睡著了一般窗悯。 火紅的嫁衣襯著肌膚如雪区匣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天蒋院,我揣著相機與錄音,去河邊找鬼莲绰。 笑死欺旧,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的蛤签。 我是一名探鬼主播辞友,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼震肮!你這毒婦竟也來了称龙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤戳晌,失蹤者是張志新(化名)和其女友劉穎鲫尊,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沦偎,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡疫向,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年咳蔚,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搔驼。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡谈火,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出舌涨,到底是詐尸還是另有隱情糯耍,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布囊嘉,位于F島的核電站温技,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏哗伯。R本人自食惡果不足惜荒揣,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望焊刹。 院中可真熱鬧系任,春花似錦、人聲如沸虐块。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贺奠。三九已至霜旧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間儡率,已是汗流浹背挂据。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留儿普,地道東北人崎逃。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像眉孩,于是被迫代替她去往敵國和親个绍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

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