앱 안의 도큐먼트에 이미지 저장, 삭제, 가져오기 (로컬에 저장)
Youngminah opened this issue · 0 comments
Youngminah commented
로컬 도큐먼트에 이미지 저장
func saveImageToDocumentDirectory(imageName: String, image: UIImage) {
//1. 이미지 저장할 경로 설정: 도규먼트 폴더
guard let documentDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else {
return
}
//2. 이미지 파일에 대한 이름 & 최종 경로 설정
let imageURL = documentDirectory.appendingPathComponent(imageName)
//3. 이미지 압축
guard let data = image.pngData() else { return }
//4. 이미지 저장 : 동일한 경로에 이미지를 저장하게 될 경우, 덮어쓰기
//4-1. 이미지 경로 여부 확인
if FileManager.default.fileExists(atPath: imageURL.path){
//4-2. 기존 경로에 있는 이미지 삭제
do {
try FileManager.default.removeItem(at: imageURL)
print("이미지 삭제 완료")
} catch {
print("이미지 삭제하지 못했습니다.")
}
}
//5. 이미지를 도큐먼트에 저장
do {
try data.write(to: imageURL)
print("이미지 저장 완료")
} catch {
print("이미지 저장 못함")
}
}
로컬 도큐먼트에 저장된 이미지 가져오기
//도규먼트 폴더 경로 -> 이미지 찾기 -> UIImage -> UIImageView
func loadImageFromDocumentDirectory(imageName: String) -> UIImage? {
let documentDirectory = FileManager.SearchPathDirectory.documentDirectory
let userDomainMask = FileManager.SearchPathDomainMask.userDomainMask
let path = NSSearchPathForDirectoriesInDomains(documentDirectory, userDomainMask, true)
if let directoryPath = path.first {
let imageURL = URL(fileURLWithPath: directoryPath).appendingPathComponent(imageName)
return UIImage(contentsOfFile: imageURL.path)
}
return nil
}
로컬 도큐먼트에 저장된 이미지 삭제하기
func deleteImageFromDocumentDirectory(imageName: String){
guard let documentDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else {
return
}
let imageURL = documentDirectory.appendingPathComponent(imageName)
if FileManager.default.fileExists(atPath: imageURL.path){
do {
try FileManager.default.removeItem(at: imageURL)
print("이미지 삭제 완료")
} catch {
print("이미지 삭제하지 못했습니다.")
}
}
}