iOS开发 swift -- 获取相册相机
来源:互联网 发布:淘宝评价等级 编辑:程序博客网 时间:2024/05/24 01:25
一 代理
swift一定要遵循UIImagePickerControllerDelegate,UINavigationControllerDelegate俩个代理
二 info.plist
在info.plist中加入安全域名白名单(右键info.plist用source code打开) <key>NSCameraUsageDescription</key> <string>访问相机</string> <key>NSPhotoLibraryUsageDescription</key> <string>访问相册</string>
三 代码示例
func addIcon() { let alertAction = UIAlertController.init(title: nil, message: nil, preferredStyle: .actionSheet) alertAction.addAction(UIAlertAction.init(title: "获取相机", style: .default, handler: { (alertCamera) in let picker:UIImagePickerController = UIImagePickerController() picker.delegate = self as UIImagePickerControllerDelegate & UINavigationControllerDelegate picker.sourceType = .camera picker.allowsEditing = true if UIImagePickerController.isSourceTypeAvailable(.camera){ self.present(picker, animated: true, completion: { () -> Void in }) }else{ MBProgressHUD.showForError(to: self.view, text: "为授予防问相机权限", completion: nil) } })) alertAction.addAction(UIAlertAction.init(title: "获取相册", style:.default, handler: { (alertPhpto) in let picker:UIImagePickerController = UIImagePickerController() picker.delegate = self as UIImagePickerControllerDelegate & UINavigationControllerDelegate picker.sourceType = .photoLibrary picker.allowsEditing = true if UIImagePickerController.isSourceTypeAvailable(.photoLibrary){ self.present(picker, animated: true, completion: { () -> Void in }) }else{ MBProgressHUD.showForError(to: self.view, text: "为授予防问相册权限", completion: nil) } })) alertAction.addAction(UIAlertAction.init(title: "取消", style: .cancel, handler: { (alertCancel) in })) self.present(alertAction, animated: true, completion: nil) } // MARK: ImagePicker Delegate 选择图片成功后代理 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { if let chosenImage = info[UIImagePickerControllerOriginalImage] as? UIImage { picker.dismiss(animated: true) { self.iconImage.image = chosenImage } //处理传入后台 } }
四 上传到后台
/// 上传图片 /// /// - Parameters: /// - path: <#path description#> /// - image: <#image description#> /// - completion: <#completion description#> class func uploadImage(path: String, image: UIImage, completion: @escaping (_ succeeded: Bool, _ url: String?) -> Void) { /* 签名 可忽略 let timestamp = String(Int(NSDate().timeIntervalSince1970 * 1000)) var _paramters = [String: Any]() _paramters["timestamp"] = timestamp let sortedKeys = _paramters.keys.sorted() var temp = sortedKeys.map({ "\($0)=\(_paramters[$0]!)" }).joined(separator: "&") temp += "&--------" let sign = temp.md5().uppercased() _paramters["sign"] = sign */ Alamofire.upload(multipartFormData: { (multipartFormData) in let data = UIImageJPEGRepresentation(image, 0.9) multipartFormData.append(data!, withName: "file", fileName: "image.png", mimeType: "image/png") for (key, value) in _paramters { multipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key) } }, to: Constant.baseURL + path) { (result) in switch result { case .success(let upload, _, _): upload.responseJSON(completionHandler: { (response) in completion(true, JSON(response.data!)["data"].string) }) case .failure(let error): print(error) completion(false, nil) } } }
如有不妥,请多多指教
作者:Hayley__
链接:http://www.jianshu.com/p/00d2de98c6f4
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
阅读全文
0 0
- iOS开发 swift -- 获取相册相机
- iOS开发swift如何调用系统相册和相机获取图片设置用户头像
- IOS SWIFT alte形式获取手机的相册和相机
- iOS 开发调用相机以及获取相册照片功能
- iOS 开发调用相机以及获取相册照片功能
- iOS开发 - 访问相机相册
- [IOS]从相册或相机获取图片
- iOS相册、相机、通讯录权限获取
- iOS 调用相机,获取相册,截取头像
- iOS 获取相机与相册,上传服务器
- iOS相册、相机、通讯录权限获取
- ios获取相机,相册,麦克风权限
- ios开发调用系统相机相册
- iOS开发 调用系统相机和相册
- 【iOS开发系列】更换头像(相机、相册)
- iOS开发:相册或相机调用
- ios开发 使用系统相册和相机
- 用Swift实现iOS相机及相册图片上传
- Oracle附加日志supplemental log(未完成,后续补充)
- Android自定义View之直方图和扇形图——ChartView
- 《如何为Android Studio安装HAXM》
- 使用java在后台将数据导出为excel文件
- JAVA面试题总览(1)
- iOS开发 swift -- 获取相册相机
- ToLua学习笔记,运行bundle中的lua脚本
- 网易笔试:统计回文
- An error occurred at line: [14] in the generated java file:
- Linux系统操作(7)———Oracle数据库安装
- 手机端访问PC端自动跳转到手机网站代码
- Oaecle 视图
- Spring Boot教程与Spring Cloud教程
- [Oracle]快速插入大量(100w)数据