JPEG
, PNG
)을 메모리에 로드 하는 단계이다.JPEG
, PNG
파일을 GPU가 읽을 수 있도록 디코딩 작업을 하는 프로세스이다. 이 단계에서는 해당 이미지 파일들을 Image Buffer 로 디코딩 하는 단계라고 이해하면 된다.JPEG
,PNG
같은 이미지 형식으로 Encode된 이미지 데이터가 저장 된다.CGImageSource
객체를 생성 한다.kCGImageSourceShouldCache
는 이미지를 디코딩된 형식으로 캐싱할지 설정 하는 옵션이다.kCGImageSourceShouldCache
false
로 지정하였다.2️⃣
scale
과 렌더링할 UIImageView 사이즈에 맞춰 썸네일의 최대 크기를 계산한다.kCGImageSourceCreateThumbnailFromImageAlways
는 이미지 원본 파일에 썸네일이 있어도 전체 이미지를 이용해 썸네일을 만들지 결정한다. mageSourceThumbnailMaxPixelSize
를 지정하지 않으면 썸네일의 크기는 전체 이미지 크기가 된다. 위 코드에서는 항상 썸네일을 만들도록 설정했다.kCGImageSourceShouldCacheImmediately
는 썸네일을 생성할 때 이미지 버퍼를 생성하라고 알려준다. 이 옵션이 가장 중요한데 Core Graphics에게 지금 썸네일이 생성되었으니, 디코딩된 이미지 버퍼를 생성하라고 알려주기 때문이다. 이 옵션을 통해 디코딩에 쓰이는 CPU Hit 순간을 정확히 제어할 수 있다.kCGImageSourceCreateThumbnailWithTransform
: 원본 이미지의 방향 및 비율에 맞게 썸네일을 회전하고 scaling 할지 결정하는 옵션이다.kCGImageSourceThumbnailMaxPixelSize
: 썸네일 이미지의 최대 가로, 세로입니다. point가 아니라 픽셀 단위로 지정해야 한다. 이 옵션을 지정하지 않으면 썸네일의 크기가 원본 이미지 크기와 동일하게 설정된다.3️⃣
CGImage
타입으로 downsampling한 썸네일 이미지를 생성한다.