Skip to content

Instantly share code, notes, and snippets.

@pedrol2b
Created May 31, 2024 14:44
Show Gist options
  • Save pedrol2b/2d8b93a0facc02662008df6da7f9b8cc to your computer and use it in GitHub Desktop.
Save pedrol2b/2d8b93a0facc02662008df6da7f9b8cc to your computer and use it in GitHub Desktop.
Efficiently invert bitmap on Android (Kotlin)
private fun invertBitmap(bitmap: Bitmap): Bitmap {
return Bitmap.createBitmap(bitmap.width, bitmap.height, Bitmap.Config.ARGB_8888).apply {
val canvas = Canvas(this)
val paint = Paint()
val matrixGrayscale = ColorMatrix()
matrixGrayscale.setSaturation(0f)
val matrixInvert = ColorMatrix()
matrixInvert.set(
@Suppress("MagicNumber")
floatArrayOf(
-1.0f, 0.0f, 0.0f, 0.0f, 255.0f,
0.0f, -1.0f, 0.0f, 0.0f, 255.0f,
0.0f, 0.0f, -1.0f, 0.0f, 255.0f,
0.0f, 0.0f, 0.0f, 1.0f, 0.0f
)
)
matrixInvert.preConcat(matrixGrayscale)
val filter = ColorMatrixColorFilter(matrixInvert)
paint.setColorFilter(filter)
canvas.drawBitmap(bitmap, 0f, 0f, paint)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment