iOS 5 取景器和实时滤镜的制作
1.使用UIImagePickerController捕捉媒体制作取景器
UIImagePickerController是一个UINavigationController的子类,他是UIKit的一部分,因此不需要添加额外的框架,使用很简单,但却功能强大。我们可以使用它选择来源媒体的类型,UIImagePicker有三种媒体来源可供选择:UIImagePickerControllerSourceTypePhotoLibrary(系统的照片库选择照片),UIImagePickerControllerSourceTypeSavedPhotosAlbum(只能在保存的相册中选择照片),UIImagePickerControllerSourceTypeTypeCamera(使用摄像头来获取图片或视频)。因此我们既可以从本地获取图片,也可以调用摄像头来捕捉新媒体,当我们选择了捕捉的媒体时它就会调用它代理的didFinishPickingMediaWithInfo:方法。UIImagePickerControllerSourceType还允许开发者提供一个视图,叠加在预览视图上面,因此我们可以通过自定义一个视图来制作一个漂亮的取景器。
取景器制作步骤:1创建一个UIImagePickerController,使用摄像头作为来源;2 必须在显示图像选取器之前,加上一个让用户拍照的方法;3简历一个Uiview作为叠加层,你可以像对待任何其他UIView一样来处理这个叠加层,你可以加上动画,加上任意的子视图等等。下面的代码演示了一个简单的取景器。
-(void)showCustomCamera
{
//创建UIImagePickerController
picker=[[UIImagePickerController alloc]init];
picker.sourceType=UIImagePickerControllerSourceTypeCamera;//选取摄像头作为来源
[picker setDelegate:self];
picker.cameraDevice=UIImagePickerControllerCameraDeviceFront;//强制选取前置摄像头;
picker.showsCameraControls=NO;//禁用摄像头空件
//创建叠加层
UIView *overLayView=[[UIView alloc]initWithFrame:self.view.bounds];
//取景器的背景图片,该图片中间挖掉了一块变成透明,用来显示摄像头获取的图片;
UIImage *overLayImag=[UIImage imageNamed:@"overLay.png"];
UIImageView *bgImageView=[[UIImageView alloc]initWithImage:overLayImag];
[overLayView addSubview:bgImageView];
//在叠加视图上自定义一个拍照按钮
UIButton *takePhotoBtn=[UIButton buttonWithType:UIButtonTypeCustom];
[takePhotoBtn setFrame:CGRectMake(74, 370, 178, 37)];
[takePhotoBtn addTarget:self action:@selector(takePhoto:) forControlEvents:UIControlEventTouchUpInside];
[overLayView addSubview:takePhotoBtn];
//将视图设置为摄像头的叠加层
picker.cameraOverlayView=overLayView;
//显示选取器
[self presentModalViewController:picker animated:YES];
}
-(void)takePhoto:(id)sender
{
[picker takePicture];//他将会自动调用代理方法完成照片的拍摄;
}
2.使用AV Foundation框架来实现实时滤镜
相关新闻>>
- 发表评论
-
- 最新评论 更多>>