Files
session-android/src/org/thoughtcrime/securesms/loki/utilities/QRCodeUtilities.kt

31 lines
1.3 KiB
Kotlin
Raw Normal View History

2020-05-11 16:19:26 +10:00
package org.thoughtcrime.securesms.loki.utilities
2020-01-06 16:05:57 +11:00
import android.graphics.Bitmap
import android.graphics.Color
import com.google.zxing.BarcodeFormat
import com.google.zxing.EncodeHintType
import com.google.zxing.WriterException
import com.google.zxing.qrcode.QRCodeWriter
object QRCodeUtilities {
2020-01-17 14:24:33 +11:00
fun encode(data: String, size: Int, isInverted: Boolean = false, hasTransparentBackground: Boolean = true): Bitmap {
2020-01-06 16:05:57 +11:00
try {
val hints = hashMapOf( EncodeHintType.MARGIN to 1 )
val result = QRCodeWriter().encode(data, BarcodeFormat.QR_CODE, size, size, hints)
val bitmap = Bitmap.createBitmap(result.width, result.height, Bitmap.Config.ARGB_8888)
for (y in 0 until result.height) {
for (x in 0 until result.width) {
if (result.get(x, y)) {
2020-01-17 14:24:33 +11:00
bitmap.setPixel(x, y, if (isInverted) Color.WHITE else Color.BLACK)
2020-01-06 16:05:57 +11:00
} else if (!hasTransparentBackground) {
2020-01-17 14:24:33 +11:00
bitmap.setPixel(x, y, if (isInverted) Color.BLACK else Color.WHITE)
2020-01-06 16:05:57 +11:00
}
}
}
return bitmap
} catch (e: WriterException) {
return Bitmap.createBitmap(512, 512, Bitmap.Config.ARGB_8888)
}
}
}