iphone - 在 Swift 中存储和获取图像?

标签 iphone swift

我需要你的帮助。我需要将相机中的图片保存到 ImageView 中。当我打开应用程序时,图片必须出现在那里,但我不知道它是如何工作的。我是初学者,所以非常感谢您的帮助/提示 :) 谢谢。

更具体地说,我用手机拍了一张照片,照片出现了,但当我关闭应用程序时,它就不再存在了。我应该使用 NSUser 默认值吗???

最佳答案

如果你想保存简单的照片,你可以使用UserDefaults。您需要将图像转换为 NSData,然后才能保存在 UserDefaults 中。这是示例代码。

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

@IBOutlet weak var imageView: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()

    // Load saved image
    loadImageFromUserDefaults()
}

private func loadImageFromUserDefaults() {
    guard let imageData = UserDefaults.standard.data(forKey: "image_data") as NSData? else {
        print("No image saved")
        return
    }
    let image = UIImage(data: imageData as Data)
    imageView.image = image
}

private func saveImageToUserDefaults(image: UIImage) {
    guard let data = UIImageJPEGRepresentation(image, 1.0) as NSData? else {
        print("Failed to convert image")
        return
    }
    UserDefaults.standard.set(data, forKey: "image_data")
    UserDefaults.standard.synchronize()
}

@IBAction func selectPhoto(_ sender: Any) {
    let imagePickerController = UIImagePickerController()
    imagePickerController.sourceType = .photoLibrary
    imagePickerController.delegate = self
    self.present(imagePickerController, animated: true, completion: nil)
}

// UIImagePickerControllerDelegate

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
        saveImageToUserDefaults(image: image)
        loadImageFromUserDefaults()
    }
    self.dismiss(animated: true, completion: nil)
}

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
    picker.dismiss(animated: true, completion: nil)
}
}

关于iphone - 在 Swift 中存储和获取图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43984014/

相关文章:

ios - 当应用程序不在后台时打开通用链接

iphone - 获取 UITableView Swift 中每一行的 RowHeight

iphone - UIAppFonts自动加载字体?

iphone ios 11 上的 Jquery mobile 在输入字段时重新定位

ios - 错误: Use the unresolved identifier 'indexPath' in prepareForSeque function

ios - 在 swift 中使用协议(protocol)作为数组类型和函数参数

ios - 如何在 swift 中使用不同的闭包类型

iphone - SQLite 管理器 - 将表复制到另一个 .sqlite 数据库

iphone - 核心数据故障 : how to load an entities relationship set of objects correctly

swift - #selector Swift 2.2 中的处理程序方法