파워포인트를 이용한 블로그용 이미지 캡처 및 편집
마케팅 배너, 상품 이미지, 포스팅 이미지, 로고, 아이콘 등 이미지는 애플리케이션에서 많은 부분을 차지하며 페이지 성능에도 큰 영향을 주는 요소입니다. 그만큼 이미지 로드는 개발자들의 필수 고민거리입니다. 이번 포스팅에서는 안드로이드에서 이미지 로드를 구현할 때 어떤 점을 고려해야 하는지 조회해보고 이미지 로드를 개선한 경험을 공유합니다. 이미지 뷰를 로드하는 경우는 여러 가지입니다.
필요하지 않은 이미지 캐시 제거
Glide는 화면에 로드한 비트맵은 나중에 재 사용할 수 있도록 캐시에 보관합니다. 이렇게 하면 뒤로 가기를 선택해 다시 화면이 띄워질 때 혹은 동일한 이미지를 여러 번 표시할 때 등의 상태에서 캐시에 있던 비트맵을 즉시 빠르게 보여줄 수 있습니다. 비트맵을 캐시에 보관하는 것은 이미지를 빠르게 불러오고 앱의 성능을 향상시킬 수 있습니다. 그러나 그만큼 한정된 캐시 공간을 차지하는 것이기 때문에 캐시를 주의깊게 관리하는 것이 중요합니다.
Glide에서 캐시 처리 과정 Glide에서 캐시 처리는 크게 4단계로 나뉩니다.
모바일용이미지 내보내기
보통 모바일은 PC해상도가 아니라 훨씬 더 좋습니다. 보통 아이폰6,7,8은 2x로 PC보다. 2배정도 해상도가 좋고, 아이폰plus들은 3x로 3배정도 해상도가 좋고, 삼성핸드폰을 쓴다면 4배정도 해상도가 더 좋죠. 그래서 앱디자인이라면 그에 맞는 해상도로 1, 1.5, 2, 3, 4까지 모두 이미지로 내보내야 합니다. 웹은 빠른 렌더링을 위해 보통 2배정도까지만 내보냅니다. 너무 이미지가 크면 구현속도가 느리기 때문입니다.
일단 모바일과 태블릿쪽을 디자인할때는 XD에서는 물리적 단위로 원래 사이즈로 디자인을 하지만 이미지를 가져올때는 24배짜리 이미지를 사용하시면 됩니다. – 디자인은 1x로 디자인하고 내보낼때 크기를 선정하면 됩니다.
Pillow
첫째 Pillow를 이용한 방법입니다. from PIL import Imageimg Image.opentest.pngimg.saveresult.jpg
혹은 아래와 같이 사용할 수도 있습니다. from PIL import Imageimg Image.opentest.png.convertRGBimg.saveresult.jpg, jpeg
반대로 jpg를 png로 바꿀 있습니다. from PIL import Imageimg Image.opentest.jpg.convertRGBimg.saveresult.png, png
이미 손실 압축한 것을 비손실 압축인 png로 변환하는 것이 무슨 의미가 있겠냐 싶겠지만 jpg와 png는 file format입니다.
그러므로 파일 내부의 헤더 구조 등이 변경되므로 결과적으로 의미가 있습니다.
캐시 버전 관리
Glide는 자동으로 캐싱을 처리하지만 서명키를 사용해서 캐싱을 더 잘 제어할 수 있습니다. Glide의 signature를 사용해서 동일한 URL의 이미지가 업데이트됐을 때를 바로 느끼고 처리할 수 있습니다. 서명이 변경되면 Glide는 캐시 된 이미지를 무효화하고 새 리소스로 로드합니다.
저는 서버에서 이미지 마지막 수정일을 받아 메타데이터로 사용했습니다.
이미지 포맷 최적화
JPEG 혹은 PNG 대신 포맷으로 이미지 파일을 사용할 수 있습니다. WebP는 구글에서 만든 이미지 포맷으로 무손실, 손실을 모두 지원하며 과거 포맷들 대비 동일한 화질에 파일 용량은 약 2030 더 작게 만들 수 있습니다. 제 프로젝트에서 이미지 파일이 있는 곳은 두 가지로 나눌 수 있습니다. 안드로이드 drawable 폴더 이미지 서버에 있는 이미지 그렇다면 서버에 있는 이미지를 포함해 모두 WebP 포맷으로 변환하는 게 좋을까요? WebP 포맷은 Google Chrome, Microsoft Edge, Mozilla Firefox 등 여러가지 웹 브라우저와 호환되지만 하지만 Internet Explorer 등 일부 옛 브라우저나 iOS 13이하 버전은 지원하지 않습니다.
iOS에서 WebP는 2020년 14버전부터 지원됩니다.
검색 레이어
용 그림 이미지 다운 PNG 비용 없이 사용할 수 있는 용그림 이미지입니다. . PPT에서 사용하기 간편한 SVG 파일과 PNG 클립아트 파일을 다운 받을 있습니다.
자주 묻는 질문
필요하지 않은 이미지 캐시
Glide는 화면에 로드한 비트맵은 나중에 재 사용할 수 있도록 캐시에 보관합니다. 자세한 내용은 본문을 참고하시기 바랍니다.
모바일용이미지 내보내기
보통 모바일은 PC해상도가 아니라 훨씬 더 좋습니다. 좀 더 자세한 사항은 본문을 참고해 주세요.
Pillow
첫째 Pillow를 이용한 방법입니다. 궁금한 사항은 본문을 참고하시기 바랍니다.