이전 글에서 WWDC 2018 > Image and Graphics Best Practices > Image Decoding 과정을 옮겼습니다.
앞서 옮긴 내용을 요약하자면, 메모리에 로드된 이미지 데이터는 Data Buffer 형태로 메모리에 보관됩니다. 이 Data Buffer가 실제 뷰에 그려지기 위해서는 Image Buffer로 변환되어야 합니다. 여기서 Data Buffer를 Image Buffer로 변환하는 과정을 decoding 이라 합니다.
Downsampling은 크기가 큰 이미지를 작은 크기의 뷰로 보여주고자 할 때, 용이하게 쓰일 수 있습니다. 이미지 본래의 크기인 Data Buffer를 뷰 크기만큼의 Data Buffer로 줄이고, 줄여진 Data Buffer를 Image Buffer로 옮기는 것이죠. 이 과정을 Downsampling이라 합니다.
디코딩 전 단계에서 이미지를 축소해 썸네일로 만들어 디코딩할 이미지 데이터의 크기를 줄입니다. 그럼 데이터 버퍼의 크기가 작아지고, 이미지 버퍼 크기도 작아질테니, 총 메모리 사용량을 줄일 수 있게 됩니다.
UIImageView는 랜더링할 때 크기가 작아진 이미지 버퍼에서 데이터를 가져올테고 따라서 이미지를 담고 있는 원본 데이터 버퍼를 폐기할 수 있습니다.
Core Graphics framework
이미지 랜더링을 수행하는 프레임워크로, CPU를 많이 소모하는 프레임워크이다 보니 main thread에서 downsampling이 다량 발생하지 않도록 방지해야 합니다.