본문 바로가기

[Android] Glide RequestListener 이미지 바이트, 크기 확인하기

Glide RequestListener 이미지 바이트, 크기 확인하기

Glide RequestListener 등록

  • RequestListener : Glide의 이미지 Load 실패 or Load 성공에 Callback 받는 Listener
  • 이미지 Load 실패 시와 성공 시에 따른 처리가 가능하며, 여기선 리사이징된 이미지 바이트와 크기를 확인
    • 실패 시 onLoadFailed() Callback
    • 성공 시 onResourceReady() Callback

 

GlideUtil.with(binding.ivImage) {
    load(item?.encodePath())
    .override(Target.SIZE_ORIGINAL)
    .listener(createLogListener())		// RequestListener 추가
    .into(binding.ivImage)
}


/**ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ*/
private fun createLogListener(): RequestListener<Drawable> {
            return object : RequestListener<Drawable> {
            
             	// Image Load 실패 시 CallBack
                override fun onLoadFailed(
                    e: GlideException?,
                    model: Any?,
                    target: Target<Drawable>?,
                    isFirstResource: Boolean
                ): Boolean {
                    return false
                }
                
                // Image Load 후 CallBack
                override fun onResourceReady(
                    resource: Drawable?,
                    model: Any?,
                    target: Target<Drawable>?,
                    dataSource: DataSource?,
                    isFirstResource: Boolean
                ): Boolean {
                    if (resource is BitmapDrawable) {
                        val bitmap = resource.bitmap
                        Log.d(
                            "Glide", String.format(
                                "bitmap %,d btyes, size: %d x %d",
                                bitmap.byteCount,		// 리사이징된 이미지 바이트
                                bitmap.width,			// 이미지 넓이
                                bitmap.height			// 이미지 높이
                            )
                        )
                    }
                    return false
                }
            }
        }