Camera是IOS中很重要的一个信息获取途径。
以下我们主要从硬件特性以及软件特性两个方面来看看Canera的使用,先来看看软件上我们使用Camera都能干点什么。
先来看看以下一张图:
相机软件部分主要介绍两个部分:
<1> UIImagePickerController
<2> AVCapture
AVCapture的结构和使用在前面的博客中已经介绍了,这里先来看看UIImagePickerController的相关特点。
我们使用UIImagePickerController能够做点什么?
<1> UIImagePickerController
(1)输入源设置:相机、照片库
(2)设置前后摄像头
(3)设置视频质量
(4)设置照片、视频模式
(5)设置闪光灯打开方式
(6)视频编辑
(7)自己定义摄像界面
拍照部分:能够參考以下代码:
self.imagePicker = [[UIImagePickerController
alloc]
init];
self.imagePicker.delegate =
self;//设置托付代理
self.imagePicker.sourceType
= UIImagePickerControllerSourceTypeCamera;
self.imagePicker.videoQuality
= UIImagePickerControllerQualityTypeIFrame1280x720;
// self.imagePicker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModeVideo;
self.imagePicker.cameraFlashMode
= UIImagePickerControllerCameraFlashModeOn;
self.imagePicker.cameraDevice
= UIImagePickerControllerCameraDeviceFront;
self.imagePicker.allowsEditing
= YES;//设置UIImagePickerController是否同意编辑
相机属性设置之后。通过模态势图将相机打开:
[self
presentViewController:self.imagePicker
animated:YES
completion:NULL];
在完毕以上设置之后就能够在回调方法中拿到我们拍摄的、或者从照片库中选取的图片:
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary
*)info
{
// 获取可编辑Image
UIImage *image = [info
objectForKey:UIImagePickerControllerEditedImage];
UIImageWriteToSavedPhotosAlbum (image,
nil,
nil , nil);//保存到本地相冊
self.imageView.image = image;
self.imageView.contentMode
= UIViewContentModeScaleAspectFill;//照片的显示方式是否全屏
[self
dismissViewControllerAnimated:YES
completion:NULL];//模态视图退出
}
能够将照片保存起来,也能够对比片进行处理加入特效等等。
。。
视频录制部分:
视频录制设置和视频保存与拍照方法有些不一样。參考代码例如以下:
// 设置媒体类型。从当前摄像头获取媒体。
self.imagePicker.mediaTypes = [UIImagePickerController
availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary
*)info
{
// 检測当前是
拍摄照片还是拍摄视频
NSString *mediaType = [info
objectForKey:
UIImagePickerControllerMediaType];
if (CFStringCompare((__bridge
CFStringRef) mediaType,
kUTTypeMovie,
0) ==
kCFCompareEqualTo)
{
// 保存视频,所选择视频的来源地址。
NSString *moviePath = [[info
objectForKey:
UIImagePickerControllerMediaURL] path];
if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (moviePath))
{
UISaveVideoAtPathToSavedPhotosAlbum (moviePath,
nil,
nil, nil);
}
}
[self
dismissViewControllerAnimated:YES
completion:NULL];
}
自己定义相机拍摄界面:
这个功能在相机上用的也很的多。比方我们常常须要定制个性化的相机。比方美颜相机拍照功能等等。。
。
核心代码:
self.imagePicker.cameraOverlayView
= [自己定义UIView ,在UIView上设置各种button];
比如:闪光灯button:
UIView *view = [[UIView
alloc] initWithFrame:CGRectMake(0,
0, 280,
480)];
view.backgroundColor = [UIColor
clearColor];
UIButton *flashButton = [[UIButton
alloc] initWithFrame:CGRectMake(10,
10, 120,
44)];
flashButton.backgroundColor = [UIColor
colorWithRed:.5
green:.5
blue:.5 alpha:.5];
[flashButton setTitle:@"闪光灯"
forState:UIControlStateNormal];
[flashButton setTitleColor:[UIColor
whiteColor] forState:UIControlStateNormal];
好了。写到这里篇幅已经有点长了,AVCapture 放到下一篇中,以免引起视觉疲劳 呵呵。