[Swift] 이미지 저장 기능

2023. 10. 31. 21:00·Swift/개발
728x90

프로젝트를 진행하면서 고민해야 할 부분이 생겼습니다.

저희 프로그램은 Pdf→ Image → Numbers 로 변환을 해주는 프로그램입니다.

이때 여러 PDF 파일에서 Numbers로 변환할 Image들만 맥북에 저장을 하고 저장한 Image들을 Numbers 파일에 삽입 후 Image를 삭제합니다. 어떻게 개발을 해야할지 고민을 해봤습니다.

이미지 저장 Flow (개발)

PDF에서 선택된 이미지만 유저가 지정한 경로에 iWaverTemp폴더(🗂️)에 저장이 됩니다.

이 폴더는 Numbers 파일 생성이 완료되면 자동으로 삭제됩니다.

예시) 유저가 3개의 Numbers 파일을 생성한 경우

🗂️ iWaverTemp
├──🗂️ 유저가 정한 numbers1 파일 이름
│   ├── Image0 ~ Image30 (좌상단에서 우측 순서대로 이미지 숫자를 저장)
├──🗂️ 유저가 정한 numbers2 파일 이름
│   ├── Image0 ~ Image20
├──🗂️ 유저가 정한 numbers3 파일 이름
│   ├── Image0 ~ Image10

위의 형식으로 폴더가 생성된 후 이미지를 저장 후 numbers 파일 변환이 끝나면 폴더가 삭제됩니다.


이런 방식을 하기 위해서 saveImageToCustomDirectory 함수를 생성했습니다.

아래는 예시 코드입니다.

private func saveImageToCustomDirectory(image: NSImage, filename: String, directoryPath: String) {
        if let data = image.tiffRepresentation,
           let imageRep = NSBitmapImageRep(data: data) {
            
            if let imageData = imageRep.representation(using: .jpeg, properties: [:]) {
                do {
                    let iWaverDirectoryURL = URL(fileURLWithPath: directoryPath).appendingPathComponent("\\(saveFileVM.samp[0])")
                    
                    if !FileManager.default.fileExists(atPath: iWaverDirectoryURL.path) {
                        try FileManager.default.createDirectory(at: iWaverDirectoryURL, withIntermediateDirectories: true, attributes: nil)
                    }
                    
                    let fileURL = iWaverDirectoryURL.appendingPathComponent(filename)
                    
                    try imageData.write(to: fileURL)
                    saveFileVM.numbersFile.imagePaths.append(fileURL.path)
                } catch {
                    print("Error saving image: \\(error)")
                }
            }
        }
    }
728x90

'Swift > 개발' 카테고리의 다른 글

[SwiftUI] UI 최적화 문제  (1) 2024.01.12
[SwiftUI] 코드 중복 실행 문제  (0) 2023.11.01
[Swift] 폴더 이름 중복 검사  (1) 2023.10.28
[SwiftUI] View가 멈추는 현상  (0) 2023.10.25
[SwiftUI] 프로그램 차단 기능  (0) 2023.10.06
'Swift/개발' 카테고리의 다른 글
  • [SwiftUI] UI 최적화 문제
  • [SwiftUI] 코드 중복 실행 문제
  • [Swift] 폴더 이름 중복 검사
  • [SwiftUI] View가 멈추는 현상
bulmang
bulmang
모바일 개발자 도전
  • bulmang
    bulmang
    bulmang
  • 전체
    오늘
    어제
    • 분류 전체보기 (208)
      • 알고리즘 (68)
        • List (3)
        • Two Pointer (6)
        • Binary Search (4)
        • Prefix Sum (3)
        • Sort (4)
        • Brute Force (5)
        • Array (2)
        • String (4)
        • 프로그래머스 (12)
        • 백준 (9)
        • Queue (2)
        • Stack (2)
        • Recursion (12)
      • Computer Science (16)
        • Computer Architecture (6)
        • Operating System (5)
        • Network (2)
        • 기타 (2)
        • System Programming (1)
      • Swift (70)
        • 개발 (24)
        • 정리 (25)
        • 문법 (20)
      • Flutter (24)
      • 기타 (12)
        • 후기 (12)
      • Git (6)
      • Ios 오픈소스 (5)
      • UI 디자인 (5)
      • AppleScript (2)
  • 링크

    • Notion
    • Github
  • 태그

    재귀
    자료구조
    IOS
    피플
    협업
    백준
    문법
    til
    SwiftUI
    today i learned
    Xcode
    Java
    컴퓨터구조
    Swift
    개발
    알고리즘
    Apple Developer Academy
    코딩테스트
    riverpod
    FLUTTER
  • 최근 댓글

  • 최근 글

  • 인기 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.2
bulmang
[Swift] 이미지 저장 기능
상단으로

티스토리툴바