Как извлечь нарисованные области из растрового изображения в Android?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как извлечь нарисованные области из растрового изображения в Android?

Сообщение Anonymous »

Я работаю над приложением для Android с использованием Kotlin, где пользователи могут рисовать пути (линии или кривые) на изображениях с помощью Canvas. Цель состоит в том, чтобы извлечь из исходного изображения только закрашенные области, в то время как неокрашенные области должны быть прозрачными.
Однако результат, который я получаю, выглядит неверным. Полученное изображение не извлекает растровое изображение, нарисованное с помощью цветные линии, а выделяет всю очерченную область.
Может ли кто-нибудь дать мне решение? Заранее спасибо.
Вот мой текущий код для извлечения окрашенной области:

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»