Cara menampilkan gambar hitam putih di Android compose
Dec 02 2020
Saya mencoba untuk mengubah gambar berwarna yang ditampilkan menjadi hitam dan putih menggunakan android compose.
Dalam sistem tampilan, saya dapat mengubah gambar dari berwarna menjadi hitam putih dengan menambahkan filter seperti itu
imageView.colorFilter = ColorMatrixColorFilter(ColorMatrix().apply { setSaturation(0f)})
seperti yang ditunjukkan dalam jawaban ini .
Di Android Compose, fungsi Image yang bisa disusun sudah menggunakan filter warna tetapi saya tidak dapat menemukan padanan ColorMatrixColorFilter dalam paket tulis.
Berikut adalah kode gambar yang ingin saya ubah menjadi grayscale
Image(
asset = vectorResource(id = R.drawable.xxx),
modifier = Modifier.clip(RectangleShape).size(36.dp, 26.dp),
alpha = alpha,
alignment = Alignment.Center,
contentScale = ContentScale.Fit
)
Jawaban
nglauber Jan 09 2021 at 20:59
Saya mencoba jawaban ini dan bekerja untuk saya: Ubah Bitmap ke GrayScale di Android
Jadi, Anda hanya perlu menggunakan toGrayscale
fungsi ...
Inilah yang saya lakukan:
@Composable
fun GrayscaleImage() {
val context = AmbientContext.current
val image = remember {
val drawable = ContextCompat.getDrawable(
context, R.drawable.your_drawable
).toBitmap()!!.toGrayScale().asImageBitmap()
}
Image(image)
}
object Constants{
val grayPaint = android.graphics.Paint()
init {
val cm = ColorMatrix()
cm.setSaturation(0f)
val f = ColorMatrixColorFilter(cm)
grayPaint.colorFilter = f
}
}
fun Bitmap.toGrayscale(): Bitmap {
val height: Int = this.height
val width: Int = this.width
val bmpGrayscale: Bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
val c = Canvas(bmpGrayscale)
c.drawBitmap(this, 0f, 0f, Constants.grayPaint)
return bmpGrayscale
}
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Taylor Sheridan Baru Menambahkan 1 Bintang 'Yellowstone' Favoritnya ke Pemeran 'Lawmen: Bass Reeves'