이미지 클래스의 차이점(UIImage vs CGImage vs CIImage)

5703 단어 iOSSwift

1 UIImage, CGImage, CIImage의 차이점



1.1 UIImage

  • UIKit 프레임 클래스.
  • 주로 기존의 이미지를 사용하여 처리한다.
  • 길이와 위치를 "point"단위로 지정
  • view와의 교환에 주로 사용
  • 1.2 CGImage

  • CoreGraphics 프레임의 클래스.
  • 원본 도면 등을 그릴 때 사용합니다.
  • 길이와 위치를 "pixel"단위로 지정
  • 이미지를 가공하거나 픽셀 단위로 처리하는 경우 기본적으로 이미지(IN/OUT가 CGImage가 됨)를 사용합니다.

  • 1.3 CIImage

  • CoreImage 프레임 클래스.
  • 이미지에 필터/효과를 적용할 때 사용합니다.

  • 참고 문장[1]

    2 이미지 클래스별 변환 코드


    2.1 UIImage -> CGImage

    let cgImage = uiImage.CGImage
    //UIImageからCGImageへの変換時に方向パラメータを喪失する。
    //画像の向きがおかしくなるためUIImage.imageOrientationを保持しておかなければならない
    //https://qiita.com/YutoMizutani/items/de6c0f2200bdbab10624
    
    참고 문서[2]

    2.2 CGImage -> UIImage

    let uiImage = UIImage(CGImage: cgImage)
    
    참고 문서[2]

    2.3 UIImage -> CIImage

    let ciImage = uiimage.CIImage
    
    참고 문서[2]

    2.4 CIImage -> UIImage

    let uiImage = UIImage(CIImage: cgImage)
    
    참고 문서[2]

    2.5 CGImage -> CIImage

    let ciImage = CIImage(CGImage: cgImage)
    
    참고 문서[2]

    2.6 CIImage -> CGImage

    let context = CIContext(options: nil)
    let cgImage = context.createCGImage(ciImage, fromRect: ciImage.extent())
    
    참고 문서[2]

    3 로컬 파일의 읽기와 쓰기


    미완성 항목.
    UIImage를 통해서 읽고 쓰는 게 많은 것 같아요???의 코드, 아는 사람이 평론할 수 있다면 정말 좋겠다.

    3.1 UIImage->URL

    let pngImageData = UIImagePNGRepresentation(image) 
    pngImageData!.write(to: URL(fileURLWithPath: path), options: .atomic)
    
    참고 문장[3]

    3.2 URL->UIImage

    let image = UIImage(contentsOfFile: path)
    
    참고 문장[3]

    3.3 CGImage->URL


    ???

    3.4 URL->CGImage


    ???

    3.5 CIImage->URL


    ???

    3.6 URL->CIImage

    let ciimage = CIImage(contentsOf: url)
    

    참고 문장


    [1] Qita Swift 이미지 처리의 기초 지식~ iOS 표준의 이미지 클래스 프레임워크~
    [2] Qiita [UIImage] <-> [CGImage] <-> [CIImage] In Swift
    [3] Qita[Swift4] URL의 이미지를 응용 프로그램에 저장하고 로드

    좋은 웹페이지 즐겨찾기