안드로이드 Webp이용해 이미지 용량 줄이는 방법
앱을 만들면서 마지막에 신경쓰이는 부분이 바로 앱의 용량입니다.
너무 커지면 유저입장에서 lte등으로 통신비를 내면서까지 다운로드 받으려고 하지 않기도 하고,
설치하는데 기다리는 시간이 오래 걸리기 때문인데요.
오늘은 안드로이드 스튜디오를 이용해서,
이미지 파일을 Webp로 전환하는 방법에 대해서 정리해 보도록 하겠습니다.
1. Webp 이미지 파일
Webp는 Google에서 만든 이미지 파일형식입니다.
구글님이 만드셨으니 당연히 안드로이드와 안드로이드 스튜디오에서 사용이 가능합니다.
이런저런 거창한 알고리즘 보다는 기존의 png나 jpg보다 얼마나 사이즈를 줄일 수 있느냐가 중요한데요.
약 70%까지도 줄일 수 있다고 하는군요.
2. 손실 압축 방식과 무손실 압축 방식
webp는 JPEG와 같은 손실압축방식과 PNG와 같은 무손실 압축방식을 모두 다 지원하는데요.
중요한 점은 API레벨 18이상에서만 PNG와 같은 무손실 압축과 투명배경 지원이 가능하다는 것 입니다.
실제 프로덕트에서는 API레벨 15나 16도 아직 많이 있기 때문에,
무손실 압축방식 사용까지는 조금 시간이 걸릴 것 같네요.
그래도, 투명배경이 없는 배경이라든가 패턴에서는 용량 축소에 큰 효과를 볼 수 있을 것 같네요.
그럼 실제로 사용하는 방법과 결과를 보도록 하겠습니다.
3. 안드로이드 스튜디오에서 webp로 이미지 전환하기
안드로이드 스튜디오에서 webp로 이미지를 전환하는 방법은 간단한데요.
Drawable폴더에서 이미지를 선택한 후에,
우측 마우스를 클릭해서 Convert to Webp를 찾아서 선택해 주면 됩니다.
나오는 메뉴의 맨 하단에 있으므로 눈에 잘 띄지는 않네요.
(참고로 webp이미지를 오른쪽 마우스 클릭하면 Convert to Png가 나와서,
다시 png로 변환할 수 있는 기능도 안드로이드 스튜디오가 제공하고 있습니다.)
클릭해보면 아래와 같은 화면을 볼 수 있습니다.
두번째의 Lossless encoding방식이 위에서 무손실 압축이라고 했던 투명배경을 사용할 수 있는 방식이구요.
API18이상에서 사용할 수 있습니다.
저희는 손실압축인 Lossy encoding을 사용해 보도록 하겠습니다.
이제 OK를 클릭해 보면 아래와 같이 Preview할 수 있는 화면이 나옵니다.
아래의 레버를 좌우로 왔다갔다하면서 압축률을 수정하면 preview화면을 볼 수 있습니다.
아래 이미지를 보시면 실제 용량의 4%수준으로 줄은 것을 알 수 있습니다.
물론 해당 이미지는 압축률이 낮은 상태로 들어온 jpg이기는 하지만,
실제 jpg를 더 압축한 것보다도 약 50%정도 낮은 용량이 나왔습니다.
(실제 사용한 이미지는 앱에서 사용된 큰 배경 사진이미지로 아래에서는 패턴으로 가려둔 것입니다.)
finish를 하면 안드로이드 스튜디오가 기존의 jpg나 png는 삭제해주고,
webp만 저장해 줍니다.
3. 정리
매우 간단하면서도 쉽게 용량을 줄여주는 webp인데요.
안드로이드 앱 사용량을 줄여주는데 큰 도움이 될 것 같으므로
배경이나 투명없는 사각형 이미지에는 계속 사용하게 될 것 같습니다.
추후에 평균유저의 api레벨이 올라가서, api18이상에서 투명배경의 이미지에도 사용할 수 있게 되었으면 좋겠네요.