PhotoKit

Panther·2021년 3월 23일
0

사진앱에 저장되어 있는 사진에 접근할 때 활용합니다.

https://developer.apple.com/documentation/photokit

"Work with image and video assets managed by the Photos app, including those from iColud Photos and Live Photos."

포토 앱에 의해 관리되는 이미지와 비디오 에셋과 관련한 작업을 할 수 있습니다. 아이클라우드 포토와 라이브 포토를 포함합니다.

Overview

iOS와 macOS에서 PhotoKit은 미디어 편집 extension을 building하는 것을 지원합니다. 또한, iOS, macOS, tvOS에서 PhotoKit은 사진앱에서 다뤄지는 사진과 비디오에 직접적으로 접근할 수 있도록 합니다.

PhotoKit을 사용함으로써 화면표시를 위한 불러오기와 cache가 가능합니다. 또한, 이미지, 비디오, 내용의 편집이 가능하고, 앨범, Moments, 공유하고 있는 앨범과 같은 resource 집합을 다룰 수도 있습니다.

위 이미지 상 흐름은 가장 오른쪽, 즉 자신의 앱에서 PhotoKit을 통해 iCloud와 로컬 사진앱의 사진 및 비디오에 접근해 편집 등 request를 보내는 것으로 보입니다. PhotoKit은 아래에 나온 Prints, Slideshow 등의 기능도 활용할 수 있나봅니다.

https://developer.apple.com/documentation/photokit/phasset

PHObject

https://developer.apple.com/documentation/photokit/phobject

"The abstract superclass for Photos model objects (assets and collections)."

사진 객체를 위한 추상 슈퍼클래스입니다.

밑에 Overview에 PHObject 인스턴스를 생성하지 말고 구체적인 서브클래스를 사용하라고 나와있습니다. PHObject 클래스는 localIdentifier property와 관련해서 isEqual과 hash method를 수행하기 때문에 사진과 사진 컬렉션 등을 이와 관련한 함수로 추적할 수 있다고 합니다. PHObject로부터 상속받은 클래스는 슈퍼클래스의 프로퍼티 사용이 가능하므로 비교 함수를 통한 추적이 가능하다는 뜻으로 이해하고 있습니다. MetaType에서 ObjectIdentifier와 비슷한 역할을 하는 것일지도 모르겠습니다.

PHAsset

https://develop.apple.com/documentation/photokit/phasset

"A representation of an image, video, or Live Photo in the Photos library."

사진, 비디오 등을 다루기 위해 불러올 수 있습니다.

Overview에 다음과 같은 내용이 보입니다.

display, edit 등 원하는 동작을 위해 Fetching Assets에 명시된 class method를 사용해 하나 이상의 사진, 비디오 등을 가져올 수 있습니다.

그리고

Assets contain only metadata. ~

이미지 혹은 사진이 로컬 기기에 저장되면 안 된다고 하는데, 이미 저장은 되어 있는 상태여서 또 저장할 수는 없다는 의미로 해석하고 있습니다. 자세한 내용은 PHImageManager를 살펴보기를 권하고 있습니다.

PHImageManager의 Overview에서 full-size photo 혹은 thumbnail 이미지를 불러오기 위해 이 method를 사용하라고 합니다. Requesting Images와 Requesting Video Objects에 명시된 함수를 사용해 image 혹은 video를 load 하라고 나와 있습니다. 더 밑에 설명을 보면 cache 저장만 발생하는 모양입니다.

Asset objects are immutable. ~

Asset objects는 변경이 불가능하다고 합니다. asset의 metadata 편집을 원한다면 PHAssetChangeRequest를 만들어야 합니다. 자세한 내용은 PHPhotoLibrary를 살펴보라고 나와있습니다.

PHPhotoLibrary를 보면 사용자의 공유된 사진 라이브러리 접근하고 변경하는 역할을 합니다. 사진앱으로 관리되는 공유된 전체 assets와 collections을 나타내며, 로컬 기기에 저장된 것도 포함합니다. 사진에 접근하는 데 사용자 접근권한을 검증되면 변경, 편집이 가능해집니다. 변경이 끝났을 때 update message를 등록하는 역할도 있습니다.

0개의 댓글