본문 바로가기

안드로이드/이미지

(4)
[Coil] 이미지 Preload 이전에 진행했던 프로젝트에서 이미지를 다뤘는데, 지도에서 친구를 선택하면 친구가 찍은 사진이 지도에 표시되는 기능이었다. 다만 네트워크에서 이미지를 가져오려면 위와 같이 2~3초의 로딩이 소요되었다. 네트워크에서 이미지를 가져오는 작업은 많은 리소스가 필요하다. 매번 이미지를 네트워크에서 불러오게 된다면 많은 리소스 사용으로 인해 성능 또한 그만큼 떨어지게 될 것이다.때문에 Coil과 Glide 같은 이미지 라이브러리에서는 네트워크에서 가져오는 작업을 최대한 줄이고자 캐싱을 이용한다.캐싱Coil에서 이미지를 불러올 때 처음으로 메모리 캐시에서 이미지를 찾고, 없으면 디스크 그 다음 네트워크 요청을 수행한다. 실제 Coil로 이미지 로드할 때 Log를 출력해보면ImageRequest.Builder(cont..
이미지 캐싱 이미지를 로딩할 때마다 서버에서 불러온다면 네트워크 요청이 자주 발생하게 되고, 이로 인하여 앱의 성능이 저하될 수 있다.이를 개선하기 위해 Cache를 사용하는데, 한 번 불러온 이미지를 Cache에 저장하여 여러번 사용되는 이미지에 대해 네트워크 요청을 줄이고, 빠르게 불러와 데이터 로딩 속도를 줄여 앱의 성능을 향상 시킬 수 있다. 이미지를 사용할 때 주로 사용하는 라이브러리인 Glide와 Coin 등에서는 이러한 기능들을 제공해주기 때문에 따로 설정할 필요는 없지만 어떻게 캐싱을 하는지는 알고 있어야 한다. 캐싱의 종류1. 메모리 캐싱메모리 캐싱은 말 그대로 메모리에 캐싱을 저장하여 보다 빠르게 접근할 수 있지만 휘발성이며, 메모리라는 제한으로 인해 많은 데이터를 저장할 수 없다는 특징을 갖고 있..
이미지 리사이징 ✅ 이미지 리사이징현재 카메라로 사진을 찍고 앱에 저장하면 사진 하나에 3MB로 앱의 사이즈가 지속적으로 커지는 문제가 있다.서버에 저장한다고 해도 여러 사용자가 하나의 3MB의 사진을 올린다? 누가봐도 문제가 있어 보인다.사진 하나의 용량이 큰 이유는 아래와 같다.일반적으로 촬영되어 저장된 사진의 경우 카메라 촬영 시 한 장의 이미지가 아닌 순간적으로 여러 장의 이미지를 합성하여 화질을 개선해주는 솔루션을 사용하고 있으며, 일반 사진 모드는 화면 비율에 따라 차이가 있을 수 있지만 일반적으로 3:4 화면 비율 기준 약 2 ~ 3MB 정도의 사진 크기로 저장되며, 고화소(50/108MP) 사진 촬영의 경우 약 20 ~ 30MB 정도의 사진 크기로 저장되고 있습니다.https://r1.community.s..
[안드로이드] 이미지 Glide 정적인 이미지의 경우 XML 파일에서 이미지를 지정해주기에 Glide를 사용할 필요는 없다. 그러나 동적인 경우, 서버에서 이미지 파일의 경로를 얻어와 이미지를 구현해야 할 경우 대표적인 프레임워크 중 하나인 Glide를 사용한다. Glide의 다양한 기능들을 알아보고 싶다면 Glide 공식 문서를 참고 바랍니다. Glide 사용 방법 기본 설정 settings.gradle repositories { google() mavenCentral() } build.gradle(Module) dependencies{ implementation 'com.github.bumptech.glide:glide:4.16.0' } Code 공식 문서에서의 사용법 -Java- ImageView imageView = (Image..