ios - 如何将 UIPickerView Controller 中的图像或视频保存到文档目录?

标签 ios swift nsfilemanager

  1. 处理选定的图像或视频:

    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
        print("ok")
    
        if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
            //what to do to save that image
        } else {
            //how to get the video and save
        }
    }
    
  2. 保存到文档目录:

    let path = try! NSFileManager.defaultManager().URLForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomain: NSSearchPathDomainMask.UserDomainMask, appropriateForURL: nil, create: false)
    let newPath = path.URLByAppendingPathComponent("image.jpg") //or video.mpg for example
    

如何将该图像保存到以下newPath

最佳答案

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

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

let path = try! NSFileManager.defaultManager().URLForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomain: NSSearchPathDomainMask.UserDomainMask, appropriateForURL: nil, create: false)

第 2 步:在路径中附加文件名

let newPath = path.stringByAppendingPathComponent("image.jpg")

第 3 步:确定图像的文件类型为 JPEG 或 PNG 并将图像转换为数据(字节)

//let pngImageData = UIImagePNGRepresentation(image) // if you want to save as PNG
let jpgImageData = UIImageJPEGRepresentation(image, 1.0)   // if you want to save as JPEG

第四步:将文件写入创建的路径

let result = jpgImageData!.writeToFile(newPath, atomically: true)

将以上代码添加到您的 didFinishPickingImage 函数中。

  • 使用以下函数将视频保存到文档目录

    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) 
    {
        // *** store the video URL returned by UIImagePickerController *** //
        let videoURL = info[UIImagePickerControllerMediaURL] as! NSURL
    
        // *** load video data from URL *** //
        let videoData = NSData(contentsOfURL: videoURL)
    
        // *** Get documents directory path *** //
        let paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0]
    
        // *** Append video file name *** //
        let dataPath = documentsDirectory.stringByAppendingPathComponent("/videoFileName.mp4")
    
        // *** Write video file data to path *** //
        videoData?.writeToFile(dataPath, atomically: false)
    }
    

关于ios - 如何将 UIPickerView Controller 中的图像或视频保存到文档目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33916652/

相关文章:

ios - 我该如何解决?链接器命令失败,退出代码为 1(使用 -v 查看调用)

ios - 为什么 iOS 文件管理不一致地使用字符串(路径)和 URL?

ios - 静态库在 iOS 模拟器上出错并在 iOS 设备上工作

ios - 如何以编程方式从 Storyboard 中填充静态 UITableView?

iOS Swift 按钮在 View 中没有响应

swift - UICollectionView 的标题 View 在滚动时不断重复 - 如何创建固定(非粘性)的单个 Collection View 标题?

ios - Json - 准备继续查看详细信息

ios - Swift 处理 TableviewCell 中的播放/暂停按钮

iOS - FileManager 扩展的最佳实践

ios - 快速获取路径中的文件列表