Multiplatform library to take/capture screenshot/snapshot/picture/image of @Composables (and also Android Views).
⚠️⚠️ This is very experimental and tested only on Windows and Android. ⚠️⚠️
⚠️⚠️ It may not be suited for use in production code. ⚠️⚠️
implementation("ir.mahozad.multiplatform:comshot:0.3.0")
captureToImage
. Also, it should be called from the Main aka UI thread (see its KDoc for more information).
@Composable
fun Activity.MyComposable() {
val activity = this
var screenshot by remember { mutableStateOf<ImageBitmap?>(null) }
val composable: @Composable () -> Unit = remember {
@Composable {
Row {
Text(text = "Hello")
Text(text = "Meow!")
}
}
}
// You can also render your composable simply like this:
// composable()
Column {
Button(onClick = { screenshot = captureToImage(activity, composable) }) {
Text(text = "Capture")
}
screenshot?.let {
Image(
bitmap = it,
modifier = Modifier.width(200.dp),
contentDescription = null
)
}
}
}
val view = findViewById<TextView>(R.id.myTextView)
val screenshot = captureToImage(view)
// If you want Bitmap:
val androidBitmap = screenshot.asAndroidBitmap()
@Composable
fun MyComposable() {
var screenshot by remember { mutableStateOf<ImageBitmap?>(null) }
val composable: @Composable () -> Unit = remember {
@Composable {
Row {
Text(text = "Hello")
Text(text = "Meow!")
}
}
}
// You can also render your composable simply like this:
// composable()
Column {
Button(onClick = { screenshot = captureToImage(composable) }) {
Text(text = "Capture")
}
screenshot?.let {
Image(
bitmap = it,
modifier = Modifier.width(200.dp),
contentDescription = null
)
}
}
}