保存来自 URL、swift 的照片的最佳方式
Best way to save photo from URL, swift
如何保存照片?在 swift
哪种方式更好?
@IBAction func savePhoto(_ sender: Any) {
let imageData = UIImagePNGRepresentation(myImg.image!)
let compresedImage = UIImage(data: imageData!)
UIImageWriteToSavedPhotosAlbum(compresedImage!, nil, nil, nil)
let alert = UIAlertController(title: "Saved", message: "Your image has been saved", preferredStyle: .alert)
let okAction = UIAlertAction(title: "Ok", style: .default)
alert.addAction(okAction)
self.present(alert, animated: true)
}
}
这应该适合你。将 this answer from Leo Dabus 用于 getDataFromUrl
方法以从 URL:
获取数据
不要忘记将密钥 Privacy - Photo Library Additions Usage Description
添加到您的 Info.plist
中,并附上说明以向用户解释为什么您需要访问照片库。
import UIKit
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
func getDataFromUrl(url: URL, completion: @escaping (Data?, URLResponse?, Error?) -> ()) {
URLSession.shared.dataTask(with: url) { data, response, error in
completion(data, response, error)
}.resume()
}
@IBAction func savePhoto(_ sender: UIButton) {
let yourImageURLString = "https://scontent-frx5-1.cdninstagram.com/t51.2885-15/e35/22794197_139950336649166_440006381429325824_n.jpg"
guard let yourImageURL = URL(string: yourImageURLString) else { return }
getDataFromUrl(url: yourImageURL) { (data, response, error) in
guard let data = data, let imageFromData = UIImage(data: data) else { return }
DispatchQueue.main.async() {
UIImageWriteToSavedPhotosAlbum(imageFromData, nil, nil, nil)
self.imageView.image = imageFromData
let alert = UIAlertController(title: "Saved", message: "Your image has been saved", preferredStyle: .alert)
let okAction = UIAlertAction(title: "Ok", style: .default)
alert.addAction(okAction)
self.present(alert, animated: true)
}
}
}
}
如何保存照片?在 swift 哪种方式更好?
@IBAction func savePhoto(_ sender: Any) {
let imageData = UIImagePNGRepresentation(myImg.image!)
let compresedImage = UIImage(data: imageData!)
UIImageWriteToSavedPhotosAlbum(compresedImage!, nil, nil, nil)
let alert = UIAlertController(title: "Saved", message: "Your image has been saved", preferredStyle: .alert)
let okAction = UIAlertAction(title: "Ok", style: .default)
alert.addAction(okAction)
self.present(alert, animated: true)
}
}
这应该适合你。将 this answer from Leo Dabus 用于 getDataFromUrl
方法以从 URL:
不要忘记将密钥 Privacy - Photo Library Additions Usage Description
添加到您的 Info.plist
中,并附上说明以向用户解释为什么您需要访问照片库。
import UIKit
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
func getDataFromUrl(url: URL, completion: @escaping (Data?, URLResponse?, Error?) -> ()) {
URLSession.shared.dataTask(with: url) { data, response, error in
completion(data, response, error)
}.resume()
}
@IBAction func savePhoto(_ sender: UIButton) {
let yourImageURLString = "https://scontent-frx5-1.cdninstagram.com/t51.2885-15/e35/22794197_139950336649166_440006381429325824_n.jpg"
guard let yourImageURL = URL(string: yourImageURLString) else { return }
getDataFromUrl(url: yourImageURL) { (data, response, error) in
guard let data = data, let imageFromData = UIImage(data: data) else { return }
DispatchQueue.main.async() {
UIImageWriteToSavedPhotosAlbum(imageFromData, nil, nil, nil)
self.imageView.image = imageFromData
let alert = UIAlertController(title: "Saved", message: "Your image has been saved", preferredStyle: .alert)
let okAction = UIAlertAction(title: "Ok", style: .default)
alert.addAction(okAction)
self.present(alert, animated: true)
}
}
}
}