首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将图像或视频从UIPickerViewController保存到文档目录?

如何将图像或视频从UIPickerViewController保存到文档目录?
EN

Stack Overflow用户
提问于 2015-11-25 12:33:26
回答 3查看 7.4K关注 0票数 2
  1. 处理选定的图像或视频: func imagePickerController(选择器: UIImagePickerController,didFinishPickingMediaWithInfo信息: String : AnyObject) { print("ok")如果让didFinishPickingMediaWithInfo= infoUIImagePickerControllerOriginalImage as?UIImage {//如何保存该图像}否则{//如何获取视频并保存}
  2. 将其保存到文档目录: 让path =尝试!例如,NSFileManager.defaultManager().URLForDirectory(NSSearchPathDirectory.DocumentDirectory,inDomain: NSSearchPathDomainMask.UserDomainMask,appropriateForURL: nil,create: false) let newPath = path.URLByAppendingPathComponent("image.jpg") /或video.mpg

如何将该图像保存到下面的newPath

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-25 12:43:58

  • 使用以下步骤将图像保存到文档目录

步骤1:获取到文档目录的路径

代码语言:javascript
复制
let path = try! NSFileManager.defaultManager().URLForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomain: NSSearchPathDomainMask.UserDomainMask, appropriateForURL: nil, create: false)

步骤2:在路径中追加FileName

代码语言:javascript
复制
let newPath = path.stringByAppendingPathComponent("image.jpg")

步骤3:确定图像的文件类型,无论是JPEG还是PNG,并将图像转换为数据(字节)

代码语言:javascript
复制
//let pngImageData = UIImagePNGRepresentation(image) // if you want to save as PNG
let jpgImageData = UIImageJPEGRepresentation(image, 1.0)   // if you want to save as JPEG

步骤4:将文件写入创建的路径

代码语言:javascript
复制
let result = jpgImageData!.writeToFile(newPath, atomically: true)

将上述代码添加到didFinishPickingImage函数中。

  • 使用以下功能将视频保存到文档目录 func imagePickerController(选择器: UIImagePickerController,didFinishPickingMediaWithInfo信息: NSObject : AnyObject) { // *存储UIImagePickerController * // let videoURL = infoUIImagePickerControllerMediaURL as!*从URL * // let videoData = NSData(contentsOfURL: videoURL) // *获取文档目录路径*/ let路径=NSData NSSearchPathDomainMask.UserDomainMask,// *附加视频文件名* // let dataPath = documentsDirectory.stringByAppendingPathComponent("/videoFileName.mp4") // *将视频文件数据写入路径*/ videoData?.writeToFile(dataPath,原子性: false) }
票数 12
EN

Stack Overflow用户

发布于 2017-06-21 04:16:46

更新Xcode 8.3.3中Swift 3的公认答案

代码语言:javascript
复制
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
        let path = try! FileManager.default.url(for: FileManager.SearchPathDirectory.documentDirectory, in: FileManager.SearchPathDomainMask.userDomainMask, appropriateFor: nil, create: false)
        let newPath = path.appendingPathComponent("image.jpg")
        let jpgImageData = UIImageJPEGRepresentation(image, 1.0)
        do {
            try jpgImageData!.write(to: newPath)
        } catch {
            print(error)
        }

    } else {
        let videoURL = info[UIImagePickerControllerMediaURL] as! NSURL
        let videoData = NSData(contentsOf: videoURL as URL)
        let path = try! FileManager.default.url(for: FileManager.SearchPathDirectory.documentDirectory, in: FileManager.SearchPathDomainMask.userDomainMask, appropriateFor: nil, create: false)
        let newPath = path.appendingPathComponent("/videoFileName.mp4")
        do {
            try videoData?.write(to: newPath)
        } catch {
            print(error)
        }
    }
}
票数 6
EN

Stack Overflow用户

发布于 2019-11-24 15:56:42

Swift 5

代码语言:javascript
复制
func getDocumentsDirectory() -> URL {
        let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
        return paths[0]
    }

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        picker.dismiss(animated: true)
        guard let image = info[.editedImage] as? UIImage else {
            print("No image found")
            return
        }
        // saving to application directory
        let imageName = UUID().uuidString
        let imagePath = getDocumentsDirectory().appendingPathComponent(imageName)
        if let jpegData = image.jpegData(compressionQuality: 0.8) {
            print("Image Save to path \(imagePath)")
            try? jpegData.write(to: imagePath)
        }
     }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33916652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档