【问题标题】:Swift 3 save an image taken from camera and save path on databaseSwift 3保存从相机拍摄的图像并将路径保存在数据库中
【发布时间】:2018-07-11 00:35:11
【问题描述】:

我可以用手机拍照保存到画廊,但是我不知道如何存储图片的路径,所以我可以从画廊中检索它(我还不知道如何通过他的方式检索照片)路径)在我的控制器上显示它。

我有这段代码可以正常工作。我可以看到我的图片保存在画廊中,但我不知道如何获取他的网址,我想保存在 coredata 上

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    imagePicker.dismiss(animated: true, completion: nil)
    exerciceImage.image = info[UIImagePickerControllerOriginalImage] as? UIImage
    exerciceImage.isHidden = false;

    UIImageWriteToSavedPhotosAlbum(exerciceImage.image!, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil)
}
func image(_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeRawPointer) {
    if let error = error {
        // we got back an error!
        let ac = UIAlertController(title: "Save error", message: error.localizedDescription, preferredStyle: .alert)
        ac.addAction(UIAlertAction(title: "OK", style: .default))
        present(ac, animated: true)
    } else {
        let name = image.accessibilityIdentifier;

        let ac = UIAlertController(title: "Saved!", message: "Your altered image has been saved to your photos.", preferredStyle: .alert)
        ac.addAction(UIAlertAction(title: "OK", style: .default))
        present(ac, animated: true)
    }
}

我读到我可以使用 PHPhotoLibrary,但它给我的错误是它无法转换为 nsurl 这是我尝试过的

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    imagePicker.dismiss(animated: true, completion: nil)
    exerciceImage.image = info[UIImagePickerControllerOriginalImage] as? UIImage
    exerciceImage.isHidden = false;

    PHPhotoLibrary.shared().performChanges({
        let assetRequest = PHAssetChangeRequest.creationRequestForAssetFromImage(atFileURL: info[UIImagePickerControllerOriginalImage] as! URL)
        let assetPlaceholder = assetRequest?.placeholderForCreatedAsset
    }, completionHandler: { success, error in
        // completion handling
        let url = info[UIImagePickerControllerOriginalImage] as! URL;
    })
} 

【问题讨论】:

    标签: swift xcode swift3 uiimagepickercontroller phphotolibrary


    【解决方案1】:

    我找到了解决方案here 但我对其进行了编辑,因为在应用程序关闭后我无法加载图像,这是我的解决方案,希望对某人有所帮助:)

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    
        imagePicker.dismiss(animated: true, completion: nil)
        exerciceImage.image = info[UIImagePickerControllerOriginalImage] as? UIImage
        exerciceImage.isHidden = false;
    
        let docDir = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
        let imageUniqueName : Int64 = Int64(NSDate().timeIntervalSince1970 * 1000);
        let filePath = docDir.appendingPathComponent("\(imageUniqueName).png");
    
        do{
            if let pngImageData = UIImagePNGRepresentation((info[UIImagePickerControllerOriginalImage] as? UIImage)!){
                try pngImageData.write(to : filePath , options : .atomic)
                currentExerciceDto.imageCustom = "\(imageUniqueName).png"
            }
        }catch{
            print("couldn't write image")
        }
    
    }
    

    为了获取我刚刚保存的图像,我使用了这个功能

    public static func fetchData(nameImage : String) -> UIImage{
    
        let docDir = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
        let filePath = docDir.appendingPathComponent(nameImage);
    
        if FileManager.default.fileExists(atPath: filePath.path){
            if let containOfFilePath = UIImage(contentsOfFile : filePath.path){
                return containOfFilePath;
            }
        }
        return UIImage();
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-20
      • 2015-10-19
      • 2021-07-05
      • 1970-01-01
      • 2013-06-29
      相关资源
      最近更新 更多