Однако результат, который я получаю, выглядит неверным. Полученное изображение не извлекает растровое изображение, нарисованное с помощью цветные линии, а выделяет всю очерченную область.
Может ли кто-нибудь дать мне решение? Заранее спасибо.
Вот мой текущий код для извлечения окрашенной области:
Код: Выделить всё
class CustomImageView(context: Context, attrs: AttributeSet) : ImageView(context, attrs) {
private val path = Path()
private val paint = Paint().apply {
color = Color.RED
style = Paint.Style.STROKE
strokeWidth = 8f
}
private var drawCanvas: Canvas? = null
private lateinit var drawingBitmap: Bitmap
init {
setOnTouchListener { _, event ->
when (event.action) {
MotionEvent.ACTION_DOWN -> {
path.moveTo(event.x, event.y)
true
}
MotionEvent.ACTION_MOVE -> {
path.lineTo(event.x, event.y)
invalidate()
true
}
else -> false
}
}
}
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
drawCanvas = canvas
canvas.drawPath(path, paint)
}
fun getMaskedBitmap(originalBitmap: Bitmap): Bitmap {
val width = originalBitmap.width
val height = originalBitmap.height
val maskedBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
val canvas = Canvas(maskedBitmap)
canvas.drawColor(Color.TRANSPARENT)
val maskPaint = Paint().apply {
style = Paint.Style.FILL
color = Color.BLACK
isAntiAlias = true
}
canvas.drawPath(path, maskPaint)
val imagePaint = Paint().apply {
xfermode = PorterDuffXfermode(PorterDuff.Mode.SRC_IN)
}
canvas.drawBitmap(originalBitmap, 0f, 0f, imagePaint)
return maskedBitmap
}

Изображение подсолнуха ниже — это результат, который я хочу получить после рисования. Часть изображения, не нарисованная красной линией, исчезнет:

[img]https://i.sstatic. net/fzOHW2S6.png[/img]
Подробнее здесь: https://stackoverflow.com/questions/790 ... in-android