티스토리 뷰

PHImageManager로 PHAsset을 이미지로 변환할 때 requestImage를 사용합니다.

이 때  targetSize가 필요한데, targetSize에 따라 메모리 사용량이 크게달라집니다.

참고 https://baechukim.tistory.com/127

 

WWDC에서도 소개되었는데 파일의 크기가 아닌 이미지의 pixel 크기가 메모리에 영향을 주게됩니다.

그래서 targetSize를 줄이면 메모리 사용량을 개선할 수 있습니다.

(하지만 완전히 requestImage는 pixel크기에만 의존하진 않는 것 같습니다. 아래에 내용 추가)

 

asset의 pixel사이즈의 width 혹은 height가 windowWidth의 5배를 넘는다면 windowWidth의 5배크기로 줄여서 테스트했습니다.

테스트 기기는 xs / iOS15 가로 375px입니다.

예시

 

0. 이미지 피커에서 평상시 메모리

1. 파일크기 1mb / 3024 * 4032 이미지

최고 메모리사용 155.5MB -> 113.3MB

2. 파일크기 61mb / 23123 * 5093 이미지

최고 메모리사용 1.8GB -> 102MB

3. 파일크기 61mb / 23123 * 5093 이미지

최고 메모리사용 297.2MB -> 134.5MB

이미지관련 작업을 할 때 항상 targetSize에 대해서 고민하고 개발해야겠습니다.

 

내용추가

똑같은 pixelSize의 png 이미지를 23MB 40MB로 만들고 테스트하면

40MB는 메모리 부족으로 앱이 종료되는데 23MB는 메모리를 덜 사용했습니다.

requestImage에서는 완전히 pixel사이즈에만 영향을 받는 것 같진 않습니다.

 

댓글
공지사항