overlay image on qrCode
Closed this issue · 8 comments
You can do
val options = createQrVectorOptions {
colors {
dark = QrVectorColor.Eraser
}
background {
color = QrVectorColor.Solid(Color.WHITE)
}
}
This will create drawable where QRcode is cut from white background. Then you can place this drawable above any other View and this view will be visible throught the holes
Or you can merge your image and this drawable using
val resultDrawable = LayerDrawable(arrayOf(imageDrawable, qrCodeDrawable))
Or you can use this to just cut QR code from your provided imageDrawable
val options = createQrVectorOptions {
colors {
light = QrVectorColor.Eraser
dark = QrVectorColor.Transparent
}
background {
drawable = imageDrawable
}
}
I tried the above codes, but my idea is to overlay the image on the places where the QrCode is, like set a color for the QrCode, and the remaining parts that don't have the Qrcode will show up in the default background color.
It seems your code above is doing the opposite.
You can create custom QrVectorColor
and make a shaderPaint
using BitmapShader
from your image
Here is an example:
class QrImageColor(private val image : Drawable) : QrVectorColor {
override fun createPaint(width: Float, height: Float): Paint {
val bitmap = image.toBitmap(width.roundToInt(),height.roundToInt())
val bitmapShader = BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP)
return Paint().apply {
shader = bitmapShader
}
}
}
@chuongdk2011 Doest it fit your needs?
Yes, I did it. Thank you very much