package
com.example.newcanaryproject
import
android.content.Context
import
android.graphics.Bitmap
import
android.graphics.Canvas
import
android.os.Bundle
import
android.util.Log
import
android.widget.Space
import
androidx.activity.ComponentActivity
import
androidx.activity.compose.setContent
import
androidx.compose.foundation.Image
import
androidx.compose.foundation.layout.*
import
androidx.compose.material.*
import
androidx.compose.runtime.*
import
androidx.compose.ui.Alignment
import
androidx.compose.ui.Modifier
import
androidx.compose.ui.graphics.Color
import
androidx.compose.ui.graphics.asImageBitmap
import
androidx.compose.ui.platform.LocalContext
import
androidx.compose.ui.res.painterResource
import
androidx.compose.ui.text.font.FontWeight
import
androidx.compose.ui.text.style.TextAlign
import
androidx.compose.ui.unit.*
import
androidx.core.content.ContextCompat
import
com.example.newcanaryproject.ui.theme.*
class
MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super
.onCreate(savedInstanceState)
setContent {
NewCanaryProjectTheme {
Surface(
modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background
) {
Scaffold(
topBar = {
TopAppBar(backgroundColor = greenColor,
title = {
Text(
text =
"Image to Bitmap"
,
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center,
color = Color.White
)
})
}) {
drawableToBitmap()
}
}
}
}
}
}
@Composable
fun drawableToBitmap() {
val ctx = LocalContext.current
Column(
modifier = Modifier
.fillMaxWidth()
.fillMaxHeight()
.fillMaxSize()
.padding(
6
.dp),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(
modifier = Modifier.padding(
6
.dp),
text =
"Normal Image"
,
fontWeight = FontWeight.Bold,
color = greenColor,
fontSize =
20
.sp
)
Spacer(modifier = Modifier.height(
20
.dp))
Image(
painter = painterResource(id = R.drawable.android),
contentDescription =
"Android"
,
alignment = Alignment.Center
)
Spacer(modifier = Modifier.height(
20
.dp))
Text(
modifier = Modifier.padding(
6
.dp),
text =
"Bitmap Image"
,
fontWeight = FontWeight.Bold,
color = greenColor,
fontSize =
20
.sp
)
Spacer(modifier = Modifier.height(
20
.dp))
val bitmap = getBitmapFromImage(ctx, R.drawable.android)
Image(
modifier = Modifier
.height(
200
.dp)
.width(
200
.dp),
bitmap = bitmap.asImageBitmap(),
contentDescription =
"Android"
,
alignment = Alignment.Center
)
}
}
private
fun getBitmapFromImage(context: Context, drawable: Int): Bitmap {
val db = ContextCompat.getDrawable(context, drawable)
val bit = Bitmap.createBitmap(
db!!.intrinsicWidth, db.intrinsicHeight, Bitmap.Config.ARGB_8888
)
val canvas = Canvas(bit)
db.setBounds(
0
,
0
, canvas.width, canvas.height)
db.draw(canvas)
return
bit
}