UIImagePickerController 的使用

IOS獲取圖片有三種方式:

- UIImagePickerControllerSourceTypePhotoLibrary 相冊

- UIImagePickerControllerSourceTypeCamera 相機

- UIImagePickerControllerSourceTypeSavedPhotosAlbum 圖庫

最好先判斷設備數據來源是否支持

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {

}

步驟:

第一步:選擇獲取圖片的方式

UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"拍照",@"從相冊選取", nil];

[sheet showInView:self.view];

第二部:創建UIImagePickerController

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {

NSUInteger sourceType = UIImagePickerControllerSourceTypeCamera;

switch (buttonIndex) {

case 0: //相機

sourceType = UIImagePickerControllerSourceTypeCamera;

break;

case 1: //相冊

sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

break;

case 2: //取消

return;

break;

default:

break;

}

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];

imagePicker.delegate = self;

imagePicker.sourceType = sourceType; //圖片來源

imagePicker.showsCameraControls? = YES;// 設置是否顯示相機原生 UI 默認yes

imagePicker.allowsEditing = YES; //允許剪切圖片

imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceFront; //前置攝像頭

[self presentViewController:imagePicker animated:YES completion:nil];

}

第三步:兩個delegate方法?

確定使用相片

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary*)info {

[picker dismissViewControllerAnimated:YES completion:nil];

UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];//使用剪切后的圖片

self.authenPhotoView.imageView.image = image;

}

取消

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {

[picker dismissViewControllerAnimated:YES completion:nil];

}


知識補充:

1 - didFinishPickingMediaWithInfo 中的 info 可以選擇使用的圖片:

UIImagePickerControllerMediaType ?-- ?指定用戶選擇的媒體類型(文章最后進行擴展)

UIImagePickerControllerOriginalImage -- 原始圖片

UIImagePickerControllerEditedImage -- 修改后的圖片

UIImagePickerControllerCropRect -- 裁剪尺寸

UIImagePickerControllerMediaURL -- 媒體的URL

UIImagePickerControllerReferenceURL -- 原件的URL

UIImagePickerControllerMediaMetadata;當來數據來源是照相機的時候這個值才有效

UIImage *image = [info objectForKey: UIImagePickerControllerEditedImage ];

2 -? 攝像頭 -> cameraDevice

UIImagePickerControllerCameraDeviceRear -- 后置攝像頭

UIImagePickerControllerCameraDeviceFront -- 前置攝像頭

可以判斷攝像頭是否支持

if ([UIImagePickerController isCameraDeviceAvailable: UIImagePickerControllerCameraDeviceRear]) {

}

3 - 設置相機的兩種模式 -> cameraCaptureMode

UIImagePickerControllerCameraCaptureModePhoto -- 照相模式,默認

UIImagePickerControllerCameraCaptureModeVideo -- 錄像模式

imagePickerController.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;

4 - 媒體類型 -> mediaTypes

需要 #import才能用 kUTTypeImage 和 KUTTypeMovie 。

UIImagePickerControllerMediaType 包含著KUTTypeImage 和KUTTypeMovie ;默認kUTTypeImage;

imagePickerController.mediaTypes = @[(NSString *)kUTTypeImage, (NSString *)kUTTypeMovie];

4.1 - kUTTypeImage 包含:? ? ? ? ? ?

?kUTTypeImage -- 抽象的圖片類型? ? ? ? ?

? kUTTypeJPEG ? ? ? ? ?

kUTTypeJPEG2000 ? ? ? ? ?

kUTTypeTIFF ? ? ? ??

?kUTTypePICT ? ? ? ? ??

?kUTTypeGIF ? ? ? ?

?kUTTypePNG ? ? ? ??

?kUTTypeQuickTimeImage ? ? ? ? ?

kUTTypeAppleICNS ? ? ??

kUTTypeBMP ? ? ?

kUTTypeICO? ? ? ??

4.2 - kUTTypeMovie 包含: ? ? ? ? ? ?

kUTTypeAudiovisualContent -- 抽象的聲音視頻? ? ? ? ? ?

?kUTTypeMovie -- 抽象的媒體格式(聲音和視頻) ? ? ? ? ? ?

kUTTypeVideo -- 只有視頻沒有聲音? ? ? ? ? ?

?kUTTypeAudio -- 只有聲音沒有視頻? ? ? ? ? ??

kUTTypeQuickTimeMovie ? ? ? ? ??

kUTTypeMPEG ? ? ? ??

?kUTTypeMPEG4 ? ? ? ? ?

kUTTypeMP3 ? ? ? ??

?kUTTypeMPEG4Audio ? ? ? ??

kUTTypeAppleProtectedMPEG4Audio ?

5 - 設置閃光燈模式 -> cameraFlashMode

UIImagePickerControllerCameraFlashModeOff? = -1 ?// 關

UIImagePickerControllerCameraFlashModeAuto = 0 ? // 自動,默認

UIImagePickerControllerCameraFlashModeOn? = 1? ? // 開

imagePickerController.cameraFlashMode = UIImagePickerControllerCameraFlashModeOn;

6 - 設置錄像質量 -> videoQuality

UIImagePickerControllerQualityTypeHigh = 0 ? ? // 高質量,highest quality

UIImagePickerControllerQualityTypeMedium = 1 ? // 中質量,默認,Wi-Fi

UIImagePickerControllerQualityTypeLow = 2 ? ?// 低質量,cellular network

UIImagePickerControllerQualityType640x480 = 3 ? // VGA 質量,VGA quality

UIImagePickerControllerQualityTypeIFrame1280x720 = 4?

UIImagePickerControllerQualityTypeIFrame960x540 = 5


imagePickerController.videoQuality = UIImagePickerControllerQualityTypeHigh;

7 - 錄像

[imagePickerController startVideoCapture]; ? // 開始錄像

[imagePickerController stopVideoCapture]; ? // 停止錄像

imagePickerController.videoMaximumDuration = 600; ? // 設置錄像時間長度 default is 10 minutes. apply only mediaTypes includes kUTTypeMovie

8 - 自定義相機視圖

imagePickerController.showsCameraControls = YES; ? //設置是否顯示相機原生 UI ;默認使用,為no時才可以自定義相機視圖

imagePickerController.cameraOverlayView = myView; ? ? // 自定義相機視圖

imagePickerController.cameraViewTransform = CGAffineTransformMakeRotation(0.25 * M_PI); ? //改變相機視圖 - 旋轉 45 度,需要輸入的參數為弧度,45/180 * M_PI,1 度 = PI/180 弧度;

參考:http://www.cnblogs.com/QianChia/p/5758377.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容