IOS开发调用系统相机和打开闪光灯
生活随笔
收集整理的這篇文章主要介紹了
IOS开发调用系统相机和打开闪光灯
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
IOS開發調用系統相機和打開閃光燈
?
? ?今天給大家分享一下如何調用iphone的拍照功能和打開閃光燈,有些代碼我也不太理解,很多是在網上借鑒其他人的。IOS有兩種的拍照和視頻的方式:1.直接使用UIImagePickerController,這個類提供了一個簡單便捷的拍照與選擇圖片庫里圖片的功能。2.另一種是通過AVFoundation.framework框架完全自定義拍照的界面和選擇圖片庫界面。我只做了第一種,就先給大家介紹第一種做法:
一、首先調用接口前,我們需要先判斷當前設備是否支持UIImagePickerController,用isSourceTypeAvailable:來判斷是否可用
二、查看符合的媒體類型,這個時候我們調用availableMediaTypeForSourceType:判斷
在調用UIImagePickerController時我們需要加入他的兩個代理方法:
UINavigationControllerDelegate和UIImagePickerControllerDelegate,在調用攝像頭的時候還可以調閃光燈,一會代碼里有。
#import?<UIKit/UIKit.h>?? //調用閃光燈調用框架?? #import?<AVFoundation/AVFoundation.h>?? ??? @interface?CameraViewController?:?UIViewController<UINavigationControllerDelegate,?UIImagePickerControllerDelegate>?? {?? ????AVCaptureSession?*?_AVSession;//調用閃光燈的時候創建的類?? }?? ??? @property(nonatomic,retain)AVCaptureSession?*?AVSession;?? ??? @end??
在.m的- (void)viewDidLoad里建立4Button,Camera調用相機、Library調用圖片庫、flashlight打開閃光燈、close關閉閃光燈
//打開相機?? -(void)addCarema?? {?? ????//判斷是否可以打開相機,模擬器此功能無法使用?? ????if?([UIImagePickerController?isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])?{?? ??????????? ????????UIImagePickerController?*?picker?=?[[UIImagePickerController?alloc]init];?? ????????picker.delegate?=?self;?? ????????picker.allowsEditing?=?YES;??//是否可編輯?? ????????//攝像頭?? ????????picker.sourceType?=?UIImagePickerControllerSourceTypeCamera;?? ????????[self?presentModalViewController:picker?animated:YES];?? ????????[picker?release];?? ????}else{?? ????????//如果沒有提示用戶?? ????????UIAlertView?*alert?=?[[UIAlertView?alloc]?initWithTitle:@"Error"?message:@"你沒有攝像頭"?delegate:nil?cancelButtonTitle:@"Drat!"?otherButtonTitles:nil];?? ????????[alert?show];?? ????}?? }??
打開相機后,然后需要調用UIImagePickerControllerDelegate里的方法,拍攝完成后執行的方法和點擊Cancel之后執行的方法:
//拍攝完成后要執行的方法?? -(void)imagePickerController:(UIImagePickerController?*)picker?didFinishPickingMediaWithInfo:(NSDictionary?*)info?? {?? ????//得到圖片?? ????UIImage?*?image?=?[info?objectForKey:UIImagePickerControllerOriginalImage];?? ????//圖片存入相冊?? ????UIImageWriteToSavedPhotosAlbum(image,?nil,?nil,?nil);?? ????[self?dismissModalViewControllerAnimated:YES];?? ??????? }?? //點擊Cancel按鈕后執行方法?? -(void)imagePickerControllerDidCancel:(UIImagePickerController?*)picker?? {?? ????[self?dismissModalViewControllerAnimated:YES];?? }??
接著介紹打開照片庫:
[java]?view plaincopy -(void)openPicLibrary?? {?? ????//相冊是可以用模擬器打開的?? ????if?([UIImagePickerController?isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])?{?? ????????UIImagePickerController?*?picker?=?[[UIImagePickerController?alloc]init];?? ????????picker.delegate?=?self;?? ????????picker.allowsEditing?=?YES;//是否可以編輯?? ??? ????????//打開相冊選擇照片?? ????????picker.sourceType?=?UIImagePickerControllerSourceTypePhotoLibrary;?? ????????[self?presentModalViewController:picker??animated:YES];?? ????????[picker?release];?? ????}else{?? ????????UIAlertView?*alert?=?[[UIAlertView?alloc]?initWithTitle:@"Error"?message:@"你沒有攝像頭"?delegate:nil?cancelButtonTitle:@"Drat!"?otherButtonTitles:nil];?? ????????[alert?show];?? ????}?? ??????? }?? ??? //選中圖片進入的代理方法?? -(void)imagePickerController:(UIImagePickerController?*)picker?didFinishPickingImage:(UIImage?*)image?editingInfo:(NSDictionary?*)editingInfo?? {?? ????[self?dismissModalViewControllerAnimated:YES];?? }??
調用閃光燈的代碼
-(void)openFlashlight?? {?? ????AVCaptureDevice?*?device?=?[AVCaptureDevice?defaultDeviceWithMediaType:AVMediaTypeVideo];?? ????if?(device.torchMode?==?AVCaptureTorchModeOff)?{?? ????????//Create?an?AV?session?? ????????AVCaptureSession?*?session?=?[[AVCaptureSession?alloc]init];?? ??????????? ????????//?Create?device?input?and?add?to?current?session?? ????????AVCaptureDeviceInput?*?input?=?[AVCaptureDeviceInput?deviceInputWithDevice:device?error:nil];?? ????????[session?addInput:input];?? ??????????? ????????//?Create?video?output?and?add?to?current?session??? ????????AVCaptureVideoDataOutput?*?output?=?[[AVCaptureVideoDataOutput?alloc]init];?? ????????[session?addOutput:output];?? ??????????? ????????//?Start?session?configuration?? ????????[session?beginConfiguration];?? ????????[device?lockForConfiguration:nil];?? ??????????? ????????//?Set?torch?to?on?? ????????[device?setTorchMode:AVCaptureTorchModeOn];?? ??????????? ????????[device?unlockForConfiguration];?? ????????[session?commitConfiguration];?? ??????????? ????????//?Start?the?session?? ????????[session?startRunning];?? ??????????? ????????//?Keep?the?session?around?? ????????[self?setAVSession:self.AVSession];?? ??????????? ????????[output?release];?? ????}?? }?? ??? -(void)closeFlashlight?? {?? ????[self.AVSession?stopRunning];?? ????[self.AVSession?release];?? } ?
?
? ?今天給大家分享一下如何調用iphone的拍照功能和打開閃光燈,有些代碼我也不太理解,很多是在網上借鑒其他人的。IOS有兩種的拍照和視頻的方式:1.直接使用UIImagePickerController,這個類提供了一個簡單便捷的拍照與選擇圖片庫里圖片的功能。2.另一種是通過AVFoundation.framework框架完全自定義拍照的界面和選擇圖片庫界面。我只做了第一種,就先給大家介紹第一種做法:
一、首先調用接口前,我們需要先判斷當前設備是否支持UIImagePickerController,用isSourceTypeAvailable:來判斷是否可用
二、查看符合的媒體類型,這個時候我們調用availableMediaTypeForSourceType:判斷
在調用UIImagePickerController時我們需要加入他的兩個代理方法:
UINavigationControllerDelegate和UIImagePickerControllerDelegate,在調用攝像頭的時候還可以調閃光燈,一會代碼里有。
要調用閃光燈需要先建一個AVCaptureSession類的實例對象:
[java]?view plaincopy
[java]?view plaincopy
打開相機后,然后需要調用UIImagePickerControllerDelegate里的方法,拍攝完成后執行的方法和點擊Cancel之后執行的方法:
[java]?view plaincopy
接著介紹打開照片庫:
[java]?view plaincopy
調用閃光燈的代碼
[java]?view plaincopy
總結
以上是生活随笔為你收集整理的IOS开发调用系统相机和打开闪光灯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ios关于相机访问权限设置
- 下一篇: iOS开发(4)UITextField