본문 바로가기

Android - Snippet

[Android] View 이미지 캡쳐(Get Bitmap From View)

#What

View에 보여지는 이미지 그대로 Bitmap으로 떨구어야 하는 경우가 있습니다

배경을 깔고 그 위에 텍스트를 쓰고 '배경+Text'를 중첩해서 이미지를 만들어야 할 경우에 사용할 수 있는 예제 입니다

 

 

#How 

  /**
     * View Image -> Bitmap
     */
    fun getBitmapFromView(view: View): Bitmap? {
 
        if (view.measuredWidth <= 0 || view.measuredHeight <= 0) {
      		//Err
            return null
        }
        
        val bitmap = Bitmap.createBitmap(
            view.measuredWidth,
            view.measuredHeight,
            Bitmap.Config.ARGB_8888
        )
        val canvas = Canvas(bitmap)
        view.draw(canvas)
        return bitmap
    }

 

간단하지만

해당 기능을 뷰가 Attach 되기 전에 호출 할 경우 이미지가 제대로 생성 되지 않습니다

 

이 경우엔 View.post() 를 사용해 보십시용

뷰가  Attach 되지 않았다면 될 때까지 runnable을 연기시켜 줍니다

viewToCapture.post{
                val bitmap =getBitmapFromView(viewToCapture)
            }

 

 


문제 있을시 알려 주세요.

 

좋은 하루 되세요!