zoukankan      html  css  js  c++  java
  • 研究 iOS 摄像头缩放的内容


    通过AVFoundation 捕获视频


    在 iOS 6 SDK(iOS 5 SDK 以上)中捕捉摄影机的静态拍摄画面,制作类似「录像同时拍照的效果」可以透果很多方式,像是透过
    UIImagePickerController 的方式,呼叫 iOS SDK 所提供的 API 来捕捉画面,或是透过
    AVFoundation 的方式,建立影像的 AVCaptureSession,并且设定对应的 Input 与 Output。而本篇文章所采用的方法属于后者,我们使用 AVCaptureStillImageOutput 来当做 AVCaptureSession 的 Output 端,输出静态影像。

    在开始之前请先替您的项目加上 AVFoundation.framework,并且在对应的类别中引用此头文件。



        //----------------------------
        //实例化视频捕获对象 [建立 AVCaptureSession]
        //----------------------------
        AVCaptureSession *session = [[AVCaptureSession alloc]init];  
          
        //设置画质  
        session.sessionPreset = AVCaptureSessionPresetMedium;  

        //----------------------------
        //创建视频图层  
        //----------------------------
        AVCaptureVideoPreviewLayer *captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc]initWithSession:session];  
          
        captureVideoPreviewLayer.frame = CGRectMake(0, 0, 320, 568);  
          
        //设置缩放比例  
        CGFloat camScaleup = 1.8;  
        captureVideoPreviewLayer.affineTransform = CGAffineTransformMakeScale(camScaleup, camScaleup);  
          
        [self.view.layer addSublayer:captureVideoPreviewLayer];  

        //----------------------------
        //捕捉视频
        //----------------------------
        //指定媒体类型获得默认捕获设备AVCaptureDevice对象  
        AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];  
          
        NSError *error = nil;  
          
        //实例化捕获输入对象  
        AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error];  
          
        if (!input) {  
            NSLog(@"%@",error);  
        }  
          
        //加入捕获会话中  
        [session addInput:input];  



        //----------------------------
        //设置输出的图像
        //----------------------------
        //实例化静态图像输出对象  
        AVCaptureStillImageOutput *stillImageOutput = [[AVCaptureStillImageOutput alloc]init];  
          
        //设置输出参数  
        NSDictionary *dict = [[NSDictionary alloc]initWithObjectsAndKeys:AVVideoCodecJPEG,AVVideoCodecKey ,nil];  
          
        stillImageOutput.outputSettings = dict;  
          
        [session addOutput:stillImageOutput];  
          
        [session startRunning];  


        //----------------------------
        //
        //----------------------------


        //----------------------------
        //
        //----------------------------



        //----------------------------
        //
        //----------------------------



        //----------------------------
        //
        //----------------------------



    /*!
    AVCaptureSession 预设适用于高分辨率照片质量的输出。

     
    Clients may set an AVCaptureSession instance's sessionPreset to AVCaptureSessionPresetPhoto
      for full resolution photo quality output.
    */
    AVF_EXPORT NSString *const AVCaptureSessionPresetPhoto NS_AVAILABLE(10_7, 4_0);



    /*!
    AVCaptureSession 预设适用于高质量的视频和音频输出。
     
    AVCaptureSessionPresetHigh 是 sessionPreset 的默认值。
    */
    AVF_EXPORT NSString *const AVCaptureSessionPresetHigh NS_AVAILABLE(10_7, 4_0);



    /*!
    AVCaptureSession 预设适用于中等质量的输出。
     
    实现的输出适合于在无线网络共享的视频和音频比特率。
    */
    AVF_EXPORT NSString *const AVCaptureSessionPresetMedium NS_AVAILABLE(10_7, 4_0);


    /*!
    AVCaptureSession 预设适用于低质量的输出。

    为了实现的输出视频和音频比特率适合共享 3G。
    */
    AVF_EXPORT NSString *const AVCaptureSessionPresetLow NS_AVAILABLE(10_7, 4_0);


    //下面不是针对 ipad iphone 的。针对 MAC_OS


    //-----------------------------------------------

    /*!
    使用此常量设置优化动画 beginTime 属性设置为 0 的时间。
    常数是一个小的、 非零的、 积极的值,避免了优化
    */
    AVF_EXPORT const CFTimeInterval AVCoreAnimationBeginTimeAtZero NS_AVAILABLE(10_7, 4_0);


    /*!
    保留长宽比 ;适合层范围内。
     */
    AVF_EXPORT NSString *const AVLayerVideoGravityResizeAspect NS_AVAILABLE(10_7, 4_0);


    /*!
    保留长宽比 ;填充图层边界。
     */
    AVF_EXPORT NSString *const AVLayerVideoGravityResizeAspectFill NS_AVAILABLE(10_7, 4_0);

    /*!
    拉伸以填充图层边界。
     */
    AVF_EXPORT NSString *const AVLayerVideoGravityResize NS_AVAILABLE(10_7, 4_0);





  • 相关阅读:
    在ubuntu系统使用SSR
    Pandas库
    Numpy
    06-Python之标准库
    do{}while(0)
    inet_XX族函数
    大端小端
    c++ 强制类型转换
    auto类型推导
    const浅析
  • 原文地址:https://www.cnblogs.com/allanliu/p/4277915.html
Copyright © 2011-2022 走看看