# SDWebImage 메모리제한옵션 설정 (.imageScaleDownLimitBytes) 안녕하세요 __물먹고하자__ 입니다 :) 오늘은 이미지 라이브러리(SDWebImage) 사용중 픽셀이 __큰 (24000 * 13000) 5MB__ 기준 메모리가 터지는 현상이 나와 옵션찾아보고 적용했던 내용 공유드립니다. --- ## 1. SDWebImage 메모리용량 제한옵션 키값 > 💡 imageScaleDownLimitBytes : 많은 Ram을 차지했는지 모를때 바이트 제한 기준을 정하는 키값 (OOM 피하는데 도움) 참고이미지 : 픽셀큰 이미지 (24000 * 13000) 5MB 호출시 __순간 2.6GB 메모리__가 튐 --- ## 2. 샘플코드 > 💡 블로그 작성기준 __SDWebImage 5.19.7__ 사용중 Git : https://github.com/SDWebImage/SDWebImage ``` swift // (신) 픽셀사이즈 (메모리 관리부분 조절) self.imageView.sd_setImage( with: url, // url 영역 placeholderImage: nil, options: [], context: [ .imageScaleDownLimitBytes: 20 * 1024 * 1024 // 20mb 메모리제한 ], progress: nil ) { img, err, type, url in self.layout() self.newLoadingView?.stopLoadingView() self.newLoadingView = nil if let err = err { let message = LanguageN.getKey("다운로드_실패했습니다") DzCustom.makeToast(message: message, type: .error) print("이미지 다운로드 실패: \(err.localizedDescription)") } } ``` --- ## 3. 추가실험 > 💡 메모리 용량제한을 10MB, 50MB 추가 설정해보고 퀄리티 비교해보기 * GIF 이슈건 체크 | 용량제한 | 최대메모리 | 퀄리티 | | :--- | :--- | :--- | | 10MB | 기존130MB -> 200MB | 퀄리티 차이X | | 50MB | 기존150MB -> 300MB | 퀄리티 차이X | 여기까지 기준으로는 이미지 퀄리티 차이없고 당연히 적게 잡은게 좋다고 판단했으며 추가로 100MB 용량의 이미지 APNG 등 테스트 했을때 고려하여 제 기준으로는 20MB로 설정함 >💡GIF 이슈 부분 용량을 제한하고 나니깐 GIF파일을 뭉개지는 현상이 발생 내부적으로는 GIF 파일일때 50MB로 설정해도 GIF일때는 뭉개지는 현상이나와 250MB 예외처리 진행했습니다. --- ## 마무리 이번건은 코드기준으로는 SDWebImage에서 제공하는 옵션으로 금방해결 하긴했네요. 제품사용하는 고객층의 종류가 많아서 그런지 대용량 이미지는 많이 봤어도 큰픽셀 저용량은 처음본것 같습니다. __(24000 * 13000) 5MB__ 오늘은 이만~ 즐거운 코딩 되게요. 끝.
댓글
댓글 쓰기