iOS 5 取景器和实时滤镜的制作

来源:未知 责任编辑:责任编辑 发表时间:2013-12-06 08:43 点击:

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框架来实现实时滤镜

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Lexical or Preprocessor Issue 'xxx.h
  • ios学习笔记(二)xcode 4.3.2下实现基本交互
  • ios版本的helloworld
  • iphone(object-c) 内存管理(3) 有效的内存管理 前半部分
  • ios学习笔记(一)xcode 4.3.2下创建第一个ios项目
  • IOS类似iphone通讯录TableView的完整demo【附源码】
  • UITableView一些方法
  • [iPhone中级]iPhone团购信息客户端的开发 (二)
  • iphone(object-c)内存管理(1)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1