package com.imagefromview import android.graphics.Bitmap import android.graphics.Canvas import android.util.Base64 import android.util.Log import com.facebook.react.bridge.Promise import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.bridge.ReadableMap import com.facebook.react.module.annotations.ReactModule import com.facebook.react.uimanager.UIManagerHelper import java.io.ByteArrayOutputStream @ReactModule(name = ImageFromViewModule.NAME) class ImageFromViewModule(private val reactContext: ReactApplicationContext) : NativeImageFromViewSpec(reactContext) { override fun getName(): String { return NAME } override fun makeImageFromView(tag: Double, options: ReadableMap?, promise: Promise?) { val uiManager = UIManagerHelper.getUIManagerForReactTag(reactContext, tag.toInt()) ?: run { promise?.reject(Throwable("falha ao inicializar ui manager")) return } reactContext.runOnUiQueueThread { val targetView = uiManager.resolveView(tag.toInt()) ?: run { promise?.reject(Throwable("ViewID não encontrado")) return@runOnUiQueueThread } val bitmap = Bitmap.createBitmap( targetView.width, targetView.height, Bitmap.Config.ARGB_8888 ) val canvas = Canvas(bitmap) targetView.draw(canvas) val byteArrayOutputStream = ByteArrayOutputStream() bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream) val byteArray = byteArrayOutputStream.toByteArray() promise?.resolve(Base64.encodeToString(byteArray, Base64.DEFAULT)) } } companion object { const val NAME = "ImageFromView" } }