Как обрезать растровое изображение круга из исходного растрового изображения в Android? - PullRequest
0 голосов
/ 02 октября 2019

В настоящее время существует множество способов создания кругового растрового изображения в Android. Но ни один из них не работает для прямоугольного растрового изображения. Даже Android API RoundedBitmapDrawable не сильно помогает.

По сути, эта функция расширения kotlin решит проблему.

1 Ответ

0 голосов
/ 02 октября 2019
fun Bitmap.cropToCircle(): Bitmap {
    val circleBitmap = if (this.width > this.height) {
        Bitmap.createBitmap(this.height, this.height, Bitmap.Config.ARGB_8888)
    } else {
        Bitmap.createBitmap(this.width, this.width, Bitmap.Config.ARGB_8888)
    }
    val bitmapShader = BitmapShader(this, TileMode.CLAMP, TileMode.CLAMP)
    val paint = Paint().apply {
        isAntiAlias = true
        shader = bitmapShader
    }
    val radius = if (this.width > this.height) {
        this.height / 2f
    } else {
        this.width / 2f
    }
    Canvas(circleBitmap).apply {
        drawCircle(radius, radius, radius, paint)
    }
    this.recycle()
    return circleBitmap
}   

Hope this helps someone!
...