Hyeyeon blog

[Android] Zxing으로 바코드 생성하기 본문

개발/Android

[Android] Zxing으로 바코드 생성하기

Hyeyeon.P 2020. 11. 25. 14:33
반응형

1. Zxing dependency 추가 (참고: Zxing Github)

1-1. min SDK version이 24 이상인 경우

dependencies {
	implementation 'com.journeyapps:zxing-android-embedded:4.1.0'
}

1-2. min SDK version이 23 이하인 경우

dependencies {
    implementation('com.journeyapps:zxing-android-embedded:4.1.0') { transitive = false }
    implementation 'com.google.zxing:core:3.3.0'
}

 

2. Zxing으로 Bitmatrix를 생성하는 함수와 생성된 Bitmatrix를 Bitmap으로 변환하는 함수

private val WHITE: Int = 0xFFFFFFFF.toInt()
private val BLACK: Int = 0xFF000000.toInt()

fun createBarcode(code: String) : Bitmap{
    val widthPx = TypedValue.applyDimension(
            TypedValue.COMPLEX_UNIT_DIP, 390f,
            resources.displayMetrics
    )
    val heightPx = TypedValue.applyDimension(
            TypedValue.COMPLEX_UNIT_DIP, 111f,
            resources.displayMetrics
    )
    val format: BarcodeFormat = BarcodeFormat.CODE_128
    val matrix: BitMatrix = MultiFormatWriter().encode(code, format, widthPx.toInt(), heightPx.toInt())
    val bitmap = createBitmap(matrix)
    return bitmap
}

fun createBitmap(matrix: BitMatrix): Bitmap {
    val width = matrix.width
    val height = matrix.height
    val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)

    for (x in 0 until width) {
        for (y in 0 until height) {
            bitmap.setPixel(x, y, if (matrix.get(x, y)) BLACK else WHITE)
        }
    }
    return bitmap
}

 

3. 적용

val code = "ABC12345"
val barcode = createBarcode(code)
imageView.setImageBitmap(barcode)

 

 

 

728x90
Comments