>

UIImage 가있다  디스크 (문서 디렉토리)에 저장하려고하는 배열. 나는 그것을 Data 로 변환했습니다.  저장 할 수는 있지만 [Data] 를 저장하는올 바르고 가장 좋은 방법은 알 수 없습니다.  디스크에.

(arrayData as NSArray).write(to: filename, atomically: false)  옳지 않은 것 같거나 더 좋은 방법이있는 것 같습니다.

지금까지의 코드 :

   // Get the new UIImage
    let image4 = chartView.snapShot()
    // Make UIImage into Data to save
    let data = UIImagePNGRepresentation(image4!)
    // Add Data image to Data Array
    arrayData.append(data!)
    // Get Disk/Folder
    let filename = getDocumentsDirectory().appendingPathComponent("images")
    // This is how I'd Write Data image to Disk
    // try? data?.write(to: filename)
    // TODO: Write array Data images to Disk
    (arrayData as NSArray).write(to: filename, atomically: false)


  • 답변 # 1

    이미지를 문서 디렉토리에 저장하려면 다음과 같이 이미지를 저장하는 기능을 생성하여 시작할 수 있습니다. 이 함수는 이미지 이름 생성을 처리하고 반환합니다.

       func saveImage(image: UIImage) -> String {
        let imageData = NSData(data: UIImagePNGRepresentation(image)!)
        let paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory,  FileManager.SearchPathDomainMask.userDomainMask, true)
       let docs = paths[0] as NSString
       let uuid = NSUUID().uuidString + ".png"
       let fullPath = docs.appendingPathComponent(uuid)
       _ = imageData.write(toFile: fullPath, atomically: true)
      return uuid
       }
    
    

    이제 이미지 배열을 저장하고 싶을 때 간단히 saveImage 함수를 반복해서 호출 할 수 있습니다.

      for image in images { 
           saveImage(image: image)
       }
    
    

    이미지 이름을 직접 지정하려면 첫 번째 기능을 다음과 같이 수정하십시오.

       func saveImage(image: UIImage, withName name: String) {
     let imageData = NSData(data: UIImagePNGRepresentation(image)!)
     let paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory,  FileManager.SearchPathDomainMask.userDomainMask, true)
     let docs = paths[0] as NSString
     let name = name
     let fullPath = docs.appendingPathComponent(name)
     _ = imageData.write(toFile: fullPath, atomically: true)
     }
    
    

    이미지를 UIImagePNGRepresentation으로 저장하려고하면 방향이 저장되지 않습니다. 즉, 이미지를 검색하려고하면 제목이 왼쪽에 표시 될 수 있습니다. 이 게시물에서 png를 올바르게 저장하는 방법을 설명하므로 이미지의 방향이 올바른지 다시 그려야합니다. 그러나 UIImageJPEGRepresentation으로 이미지를 저장하면 모든 것에 대해 걱정할 필요가 없으며 추가 노력없이 이미지를 간단히 저장할 수 있습니다.

    이미지 배열을 제공하도록 편집 됨

    저장 한 이미지를 검색하려면 이미지 이름의 배열을 전달하고 배열을 다시 얻는 다음 기능을 사용할 수 있습니다.

      func getImage(imageNames: [String]) -> [UIImage] {
        var savedImages: [UIImage] = [UIImage]()
        for imageName in imageNames {
        if let imagePath = getFilePath(fileName: imageName) {
            savedImage.append(UIImage(contentsOfFile: imagePath))
        }
       }
       return savedImages
       }
    
    

    이 기능을 사용하여 작동하는 방법 :

       func getFilePath(fileName: String) -> String? {
        let nsDocumentDirectory = FileManager.SearchPathDirectory.documentDirectory
        let nsUserDomainMask = FileManager.SearchPathDomainMask.userDomainMask
        var filePath: String?
        let paths = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true)
       if paths.count > 0 {
       let dirPath = paths[0] as NSString
       filePath = dirPath.appendingPathComponent(fileName)
       }
      else {
      filePath = nil
      }
      return filePath
      }
    
    

  • 답변 # 2

    아래 코드를 사용하여 이미지를 로컬에 저장할 수 있습니다.

      let fileManager = NSFileManager.defaultManager()
        let paths = (NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString).stringByAppendingPathComponent("ImageName.png")
        let image = YOUR_IMAGE_TO_STORE.
        let imageData = UIImageJPEGRepresentation(image!, 0.5)
        fileManager.createFileAtPath(paths as String, contents: imageData, attributes: nil)
    
    

  • 이전 레일 4 has_many - 기본 순서를 통해
  • 다음 c - 메모리를 할당하는 한 가지 방법이 작동하는 다른 방법에 비해 왜 실패합니까?