url에서 이미지 다운받아 내부 저장소에 저장 후 ImageView에 diplay 하기.
// guard let url = URL(string: "https://anyUrl.com") else {return}
// downloadImage(from: url, imageName: "imageName")
func downloadImage(from url: URL, imageName: String) {
getData(from: url) { data, response, error in
guard let data = data, error == nil else { return }
Utils.ImageSaveAsFile(image: UIImage(data: data)!, name: imageName, onSuccess:{ result in
// always update the UI from the main thread
DispatchQueue.main.async() { [weak self] in
self?.resultimageView.image = getSavedImage(name: imageName)
}
})
}
}
func getData(from url: URL, completion: @escaping (Data?, URLResponse?, Error?) -> ()) {
URLSession.shared.dataTask(with: url, completionHandler: completion).resume()
}
func ImageSaveAsFile(image: UIImage, name: String,
onSuccess: @escaping (Bool) -> Void) {
//내부저장소에 이미지 파일로 저장하기
guard let data: Data = image.jpegData(compressionQuality: 1) ?? image.pngData() else { return }
if let directory: NSURL = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) as NSURL {
do {
try data.write(to: directory.appendingPathComponent(name)!)
onSuccess(true)
} catch let error as NSError {
print("Could not save Image", error, error.userInfo)
onSuccess(false)
}
}
}
func getSavedImage(name: String) -> UIImage? {
//내부저장소에 저장된 이미지 파일 불러오기
if let dir: URL = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) {
let path: String = URL(fileURLWithPath: dir.absoluteString).appendingPathComponent(name).path
let image: UIImage? = UIImage(contentsOfFile: path)
return image
}
return nil
}
'iOS > Swift' 카테고리의 다른 글
[ios - swift] custom camera (0) | 2022.12.06 |
---|---|
[ios - swift] UIView several corner radius (0) | 2022.12.06 |
[ios - swift] Alamofire upload image data (0) | 2022.12.05 |
[ios - swift] resize UIImage (0) | 2022.12.02 |
[ios - swift] crop UIImage (0) | 2022.11.23 |