欢迎光临
我们一直在努力

鹏哥哥Swift版相机

建站超值云服务器,限时71元/月

鹏哥哥Swift版相机

项目介绍:

CameraDemo

Swift版的相机 由于项目需要 初学swift 请多关照
由于某种原因 上传不了演示代码 请去GitHub下载
请多多Star 感谢
需真机调试
https://github.com/penghero/CameraDemo.git
由于需访问相册 相机 麦克 需在项目info.plist中添加如下键值对

Privacy – Photo Library Additions Usage Description //App需要您的同意,才能访问相册
Privacy – Photo Library Usage Description//App需要您的同意,才能访问相册
Privacy – Camera Usage Description//App需要您的同意,才能访问相机
Privacy – Microphone Usage Description//App需要您的同意,才能访问麦克风
演示GIF

image

概要

整体采用故事版搭建的页面 其中故事版页面的跳转方式 有必要讲一下 首先可以使用故事版内部 Segue跳转 不与多讲 仅说 用代码跳转故事版页面 直接附上代码

    let story = UIStoryboard.init(name: "Main", bundle: nil)
    let detailVC: DetailedModelController = story.instantiateViewController(withIdentifier: "DetailedModelController") as! DetailedModelController
    present(detailVC, animated:true, completion: nil
    //self.navigationController?.pushViewController(vc, animated: true)

数据存储方式

由于我的项目数据较少 仅存数张图片和部分视频URL链接 故 采用较为简单的UserDefaults进行存储 直接附上代码

/**
 储存 对应键值
 UnityFileTypeGL ,UnityFileTypeCW ,UnityFileTypeZX ,UnityFileTypeXM ,UnityFileTypeLX
 对应数

UnityFileTypeGLArray ,UnityFileTypeCWArray ,UnityFileTypeZXArray ,UnityFileTypeXMArray ,UnityFileTypeLXArray

 - parameter key:   key
 - parameter value: value
 */
public func setNormalDefault (_ key:String, _ value:AnyObject?) {
    if value == nil {
        UserDefaults.standard.removeObject(forKey: key)
    }
    else{
        UserDefaults.standard.setValue(value, forKey: key)
        // 同步
        UserDefaults.standard.synchronize()
    }
}
/**
 通过对应的key移除储存
 - parameter key: 对应key
 */
public func removeNormalUserDefault(_ key:String?) {
    if key != nil {
        UserDefaults.standard.removeObject(forKey: key!)
        UserDefaults.standard.synchronize()
    }
}
/**
 通过key找到储存的value
 - parameter key: key
 - returns: AnyObject
 */
public func getNormalDefult(_ key:String)->AnyObject? {
    return UserDefaults.standard.value(forKey: key) as AnyObject
}

补充 图片存储方式

由于UserDefaults 它能直接存储基本数据类型数组 字典等 不能直接存储图片 需将其转化为NSData格式进行存储 直接附上代码

//存入

    let imageData: NSData = NSKeyedArchiver.archivedData(withRootObject: image) as NSData
    let userDef = UserDefault()
    userDef.setNormalDefault("TemplateViewImage", imageData)

//读取

    let userDef = UserDefault()
    let imageD = userDef.getNormalDefult("TemplateViewImage") as? NSData
    if imageD != nil {
        imageData = userDef.getNormalDefult("TemplateViewImage") as? NSData
    } else { imageData = nil }

使用ARVideoKit库 进行AR景的拍照和录像

//拍照

    if recorder?.status == .readyToRecord {
        let image = self.recorder?.photo()
        self.recorder?.export(UIImage: image) { saved, status in
            if saved {
                self.exportMessage(success: saved, status: status)
            }
        }
      }

//录像
if recorder?.status == .readyToRecord {

        cVideo.setTitle("录制结束", for: .normal)
        cVideo.setBackgroundImage(#imageLiteral(resourceName: "cstop"), for: .normal)
        recordingQueue.async {
            self.recorder?.record()
        }
        cVideo.setTitle("开始录制", for: .normal)
        cVideo.setBackgroundImage(#imageLiteral(resourceName: "cstart"), for: .normal)
        recorder?.stop() { path in
            self.recorder?.export(video: path) { saved, status in
                DispatchQueue.main.sync {
                    self.exportMessage(success: saved, status: status)
                }
            }
        }
    }

联系

如遇问题 请与我联系 我们一起探讨 研究 896733185@qq.com

感谢

特别感谢这个ARVideoKit作者 附上链接 https://github.com/AFathi/ARVideoKit

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 鹏哥哥Swift版相机
分享到: 更多 (0)