큰 이미지가 계속 흐릿해보이면 Glide를 의심해보자
728x90
반응형

맹세코 노안이 올 시기가 아닌데 디바이스의 이미지가 좀 흐릿해 보인다.

서버에서 이미지를 엉뚱한걸 보내나 싶어서 다운로드 받았는데 멀쩡하다.

그래서 이미지를 그냥 로컬에 담아서 ImageView에 set을 해봤는데 이것도 멀쩡하다.

그렇다면 의심해볼 녀석은 하나밖에 남지 않았다.

 

"야!! 글라이드!! 너 뭐하는거야?"

 

format이 문제가 아니다

먼저 샘플 코드를 보자. 무엇이 문제인지 찾기 위해 주석처리를 하면서 많은 옵션을 넣은 흔적이 보이는가?

Glide.with(this)
    .load(R.drawable.bigimage3)
    .format(DecodeFormat.PREFER_ARGB_8888)
//    .diskCacheStrategy(DiskCacheStrategy.NONE)
//    .skipMemoryCache(true)
//    .priority(Priority.IMMEDIATE)
//    .override(Target.SIZE_ORIGINAL)
    .into(image_big)

결론부터 얘기하자면 format 옵션에는 아무 문제가 없다.  캐시도 아니다. 그래서 옵션이란 옵션을 하나씩 다 까볼 기세로 접근했다. 그랬더니 보이는 옵션, override. Glide는 원본의 이미지가 과하게 클 경우 비율을 유지한 상태로 리사이징을 한다. 그래서 흐릿하게 보일 수 있다. 흐릿하게라는게 어떤 의미인지 이해가 안된다면 샘플 코드를 받아서 앱을 런칭해보면 알 수 있다.

 

아무튼 이 리사이징이 문제라면 원본을 그대로 유지하고 이후 이미지 처리를 하면 되지 않을까? 그것이 아래와 같다.

Glide.with(this)
    .load(R.drawable.bigimage3)
    .override(Target.SIZE_ORIGINAL)
    .into(image_big)

Target은 이미지를 로드할 때 응용할 수 있는 인터페이스다. load하는 시점에서 사이즈를 확인할테니 원본 사이즈를 변경하지 않도록 Target.SIZE_ORIGINAL로 지정한다. 클릭 이벤트로 흐릿하게 보였을 때와 조치를 취한 경우를 비교할 수 있도록 했다.

 

 

자, 나와 같은 고민을 한 개발자들이여.

어서 가서 디자이너가 작업해준 작업물을 디바이스에 뿌리거라~

728x90
반응형