UI(三十九)录像、拍照
录像拍照
1、导入框架#import -> UIImagePickerController
2、先区分 选择摄像头、相册 sourceType
(1)UIImagePickerControllerSourceTypePhotoLibrary 摄像头
(2)UIImagePickerControllerSourceTypeCamera 相册
(3)UIImagePickerControllerSourceTypeSavedPhotosAlbum 相册
3、再区分录像与拍照 cameraCaptureMode:
(0)设置录像-> 要先选择媒体的类型 默认拍照不崩溃因为默认设置媒体类型是kUTTypeImage ※※※※※※不然会崩溃
(1)录像:UIImagePickerControllerCameraCaptureModeVideo
(2)拍照:UIImagePickerControllerCameraCaptureModePhoto
4、区分前后摄像头 cameraDevice
(1)UIImagePickerControllerCameraDeviceRear 前摄像头
(2)UIImagePickerControllerCameraDeviceFront 后摄像头
5、选择媒体类型 mediaTypes
(1)选择媒体类型 默认kUTTypeImage
(2)kUTTypeImage包含在框架->#import
(3)需要的内容不是OC里面的字符串类型 需要强制转换
(4)录制视频 -> 类型要选择kUTTypeMovie 它里面包含了audio和vidio
6、设置是否显示控制控件 showsCameraControls
7、设置拍照 takePicture
8、录像 startVideoCapture、stopVideoCapture
9、设置视频清晰度 videoQu
(1)UIImagePickerControllerQualityTypeHigh
(2)UIImagePickerControllerQualityTypeMedium
(3)UIImagePickerControllerQualityTypeLow
(4)UIImagePickerControllerQualityType640x480
(5)UIImagePickerControllerQualityTypeIFrame1280x720
(6)UIImagePickerControllerQualityTypeIFrame960x540
10、设置视频最大的录像时间videoMaximumDuration
11、设置闪光 cameraFlashMode
(1)UIImagePickerControllerCameraFlashModeOff 关闭
(2)UIImagePickerControllerCameraFlashModeAuto自动-默认
(3)UIImagePickerControllerCameraFlashModeOn 开启
12、设置调用摄像头视频页面的覆盖视图cameraOverlayView
13、设置拍照页面的形态 cameraViewTransform
14、代理 delegate 需要导入两个代理
方法:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info;采集完成之后调用、不区分摄像拍照
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;采集取消的时候调用
15、(1)把图片保存到相册
UIImageWriteToSavedPhotosAlbum(finishImage, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
(2)保存成功的回调方法
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{
NSLog(@"图片保存成功");
}
16、(1)保存视频到相册
NSString *path = (NSString *)[info[UIImagePickerControllerMediaURL] path];
UISaveVideoAtPathToSavedPhotosAlbum(path, self, @selector(video:didFinishSavingWithError:contextInfo:), nil);
(2)视频保存到相册之后调用
- (void)video:(NSString *)videoPath didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{
}
17、(1)JPEG格式图片转换成NSData
NSData *imageData = UIImageJPEGRepresentation(finishImage, 0.1);
(2)PNG格式图片转换成NSData
NSData *imageData1 = UIImagePNGRepresentation(finishImage);