SwiftCommon之Camera相机

概述

IOS中调用设备的相机拍照、录制视频,使用UIImagePickerController类,根据不同的SourceType来区分是拍照还是录视频。

SCCamera

1import Foundation 2import UIKit 3import MobileCoreServices 4 5public enum SCImagePickerMediaType{ 6 case Movie 7 case Image 8 case All 9} 10 11public class SCImagePicker{ 12 13 14 /** 15 当前设备的相机是否可用 16 17 :returns: 可用返回true,否则返回false 18 */ 19 public class func isCameraAvailable()->Bool{ 20 return UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera) 21 } 22 23 /** 24 当前设备的照片库是否可用 25 26 :returns: 可用返回true,否则返回false 27 */ 28 public class func isPhotoLibraryAvailable()->Bool{ 29 return UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.PhotoLibrary) 30 } 31 32 /** 33 根据SourceType获取当前设备支持的MediaType 34 35 :param: sourceType 需要使用的SourceType 36 37 :returns: 返回一个数组,可能包含了kUTTypeImage、kUTTypeMovie,更多请查看系统类库源码 38 */ 39 public class func availableMediaTypes(sourceType:UIImagePickerControllerSourceType)->[AnyObject]{ 40 return UIImagePickerController.availableMediaTypesForSourceType(sourceType)! 41 } 42 43 44 /** 45 视频或者图片拍摄后,根据拿到的info获取,当前操作是Movie还是Image 46 47 :param: info didFinishPickingMediaWithInfo事件回调参数中的info参数 48 49 :returns: 返回SCCameraMediaType类型,可能是Movie或者Image 50 */ 51 public class func getMediaTypeFromResultInfo(info: [NSObject : AnyObject])->SCImagePickerMediaType{ 52 let mediaType = info["UIImagePickerControllerMediaType"] as! String 53 if mediaType == kUTTypeMovie as String{ 54 return SCImagePickerMediaType.Movie 55 } 56 else{ 57 return SCImagePickerMediaType.Image 58 } 59 } 60 61 /** 62 保存录制的视频到相机胶卷中 63 64 :param: info didFinishPickingMediaWithInfo事件回调参数中的info参数 65 */ 66 public class func saveMovie(info: [NSObject : AnyObject]){ 67 let mediaUrl: NSURL = info[UIImagePickerControllerMediaURL] as! NSURL 68 let videoPath = mediaUrl.path 69 if UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(videoPath){ 70 UISaveVideoAtPathToSavedPhotosAlbum(videoPath, nil, nil, nil) 71 } 72 } 73 74 /** 75 保存录制的视频到Document文件夹中 76 77 :param: info didFinishPickingMediaWithInfo事件回调参数中的info参数 78 :param: fileName 保存文件的文件名称 79 */ 80 public class func saveMovie(info: [NSObject : AnyObject],fileName:String){ 81 let filePath = SCPath.getDocumentPath().stringByAppendingString("/\(fileName)") 82 //获取系统保存的视频的URL 83 let mediaUrl:NSURL = info[UIImagePickerControllerMediaURL] as! NSURL 84 //转换为NSData 85 let mediaData = NSData(contentsOfURL: mediaUrl) 86 mediaData!.writeToFile(filePath, atomically: true) 87 } 88 89 /** 90 保存拍摄的照片到相机胶卷中 91 92 :param: info didFinishPickingMediaWithInfo事件回调参数中的info参数 93 */ 94 public class func saveImage(info: [NSObject : AnyObject]){ 95 let image:UIImage = getSavedImage(info) 96 UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil) 97 } 98 99 /** 100 保存拍摄的图片到Document文件夹中 101 102 :param: info didFinishPickingMediaWithInfo事件回调参数中的info参数 103 :param: fileName 保存的文件名 104 */ 105 public class func saveImage(info: [NSObject : AnyObject],fileName:String){ 106 let filePath = SCPath.getDocumentPath().stringByAppendingString("/\(fileName)") 107 let image:UIImage = getSavedImage(info) 108 let data:NSData! 109 if fileName.lowercaseString.hasSuffix(".jpg"){ 110 //第二个参数表示jpg图像压缩质量,1为不压缩,最好效果。这个参数范围0.0-1.0 111 data = SCImage.getNSDataFromJPG(image, quality: 1.0) 112 }else{ 113 data = SCImage.getNSDataFromPNG(image) 114 } 115 data.writeToFile(filePath, atomically: true) 116 } 117 118 /** 119 获取拍摄的UIImage对象 120 121 :param: info didFinishPickingMediaWithInfo事件回调参数中的info参数 122 123 :returns: 返回拍摄的照片的UIImage对象 124 */ 125 public class func getSavedImage(info: [NSObject : AnyObject])->UIImage{ 126 let originalImage:UIImage? 127 let editedImage:UIImage? 128 let savedImage:UIImage? 129 130 editedImage = info["UIImagePickerControllerEditedImage"] as? UIImage 131 originalImage = info["UIImagePickerControllerOriginalImage"] as? UIImage 132 133 if (editedImage != nil){ 134 savedImage = editedImage 135 }else{ 136 savedImage = originalImage 137 } 138 return savedImage! 139 } 140 141}

Git地址

http://devonios.com/go/swiftcommon

tips:

本文由wp2blog导入,原文链接:http://devonios.com/sccamera.html

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )