swift中UIImagePickerController的使用(摄像)

本文介绍了如何在Swift中使用UIImagePickerController来实现摄像功能。通过关键代码展示,详细解释了集成过程,帮助开发者快速理解并应用到自己的项目中。

https://github.com/potato512/SYSwiftLearning


效果图



关键代码

var cameraPicker:UIImagePickerController! = nil
// MARK: 摄像
func videoShow()
{
        /*
        使用如下属性时,注意添加framework:MobileCoreServices
        
        KUTTypeImage 包含
        const CFStringRef  kUTTypeImage ;抽象的图片类型
        const CFStringRef  kUTTypeJPEG ;
        const CFStringRef  kUTTypeJPEG2000 ;
        const CFStringRef  kUTTypeTIFF ;
        const CFStringRef  kUTTypePICT ;
        const CFStringRef  kUTTypeGIF ;
        const CFStringRef  kUTTypePNG ;
        const CFStringRef  kUTTypeQuickTimeImage ;
        const CFStringRef  kUTTypeAppleICNS
        const CFStringRef  kUTTypeBMP;
        const CFStringRef  kUTTypeICO;
       
        KUTTypeMovie 包含:
        const CFStringRef  kUTTypeAudiovisualContent ;抽象的声音视频
        const CFStringRef  kUTTypeMovie ;抽象的媒体格式(声音和视频)
        const CFStringRef  kUTTypeVideo ;只有视频没有声音
        const CFStringRef  kUTTypeAudio ;只有声音没有视频
        const CFStringRef  kUTTypeQuickTimeMovie ;
        const CFStringRef  kUTTypeMPEG ;
        const CFStringRef  kUTTypeMPEG4 ;
        const CFStringRef  kUTTypeMP3 ;
        const CFStringRef  kUTTypeMPEG4Audio ;
        const CFStringRef  kUTTypeAppleProtectedMPEG4Audio;
        */
        
        // 获得相机模式下支持的媒体类型
        let availableMediaTypes:Array = UIImagePickerController.availableMediaTypesForSourceType(.Camera)!
        var canTakeVideo = false
        for mediaType in availableMediaTypes
        {
            if mediaType == (kUTTypeImage as String)
            {
                // 支持摄像
                canTakeVideo = true
                break;
            }
        }
        // 检查是否支持摄像
        if (!canTakeVideo)
        {
            print("sorry, capturing video is not supported.!!!");
            return;
        }
        
        // 创建图像选取控制器
        let videoPicker = UIImagePickerController()
        // 设置图像选取控制器的来源模式为相机模式
        videoPicker.sourceType = UIImagePickerControllerSourceType.Camera
        // 设置图像选取控制器的类型为动态图像,即视频文件
        videoPicker.mediaTypes = [kUTTypeMovie as String]
        // 设置摄像图像品质
        videoPicker.videoQuality = UIImagePickerControllerQualityType.TypeHigh
        // 设置最长摄像时间
        videoPicker.videoMaximumDuration = 30
        // 允许用户进行编辑
        videoPicker.allowsEditing = false
        // 设置委托对象
        videoPicker.delegate = self
        // 以模式视图控制器的形式显示
        self.presentViewController(videoPicker, animated: true, completion: nil)
}
// MARK: UIImagePickerControllerDelegate, UINavigationControllerDelegate
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
        print("1 图片选择:\(info)")
        
        // 录像
            // 获取媒体类型
            let mediaType = info[UIImagePickerControllerMediaType] as! String

            // 判断是静态图像还是视频
            if mediaType == (kUTTypeImage as String)
            {
            
            }
            else if mediaType == (kUTTypeMovie as String)
            {
                // 获取视频文件的url
                let mediaURL = info[UIImagePickerControllerMediaURL] as! NSURL
                // 视频文件的地址
                let pathString = mediaURL.relativePath
                print("视频地址:\(pathString)")
                
                // 创建ALAssetsLibrary对象并将视频保存到媒体库(注意添加frame:AssetsLibrary)
                let assetsLibrary = ALAssetsLibrary()
                assetsLibrary.writeVideoAtPathToSavedPhotosAlbum(mediaURL, completionBlock: {
                    (assetURL:NSURL!, error:NSError!) -> Void in
                    if let errorTmp = error
                    {
                        print("保存失败:\(errorTmp)");
                    }
                    else
                    {
                        print("保存成功");
                    }
                })
            }

        
        // 退出图片选择控制器
        picker.dismissViewControllerAnimated(true, completion: nil)
}
    
func imagePickerControllerDidCancel(picker: UIImagePickerController) {
        print("2 放弃图片选择")
        
        // 退出图片选择控制器
        picker.dismissViewControllerAnimated(true, completion: nil)
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

番薯大佬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值