Bluetooth принтер для печати QR Image android studio - PullRequest
0 голосов
/ 07 ноября 2018

Возможно ли на принтере Bluetooth распечатать изображение QR?

Я не мог напечатать изображение, а только слова. У вас есть код распечатки QR Image? Заранее благодарим, ценим.

1 Ответ

0 голосов
/ 07 ноября 2018

Я использовал это растровое изображение -> преобразование byteArray в моих старых проектах. Так что сгенерируйте растровое изображение QRcode, затем выполните outPutStream.write(printDraw(youQRBitmap)).

fun printDraw(bmp: Bitmap): ByteArray {

            var mBitBuff: ByteArray? = null

            val mWidth = bmp.width
            val mHeight = bmp.height

            val nbm = Bitmap.createBitmap(bmp, 0, 0, mWidth, mHeight)
            val imgbuf = ByteArray(mWidth / 8 * mHeight + 8)

            imgbuf[0] = 29
            imgbuf[1] = 118
            imgbuf[2] = 48
            imgbuf[3] = 0
            imgbuf[4] = (this.width / 8).toByte()
            imgbuf[5] = 0
            imgbuf[6] = (this.getLength() % 256).toByte()
            imgbuf[7] = (this.getLength() / 256).toByte()
            var ext = 7

            for (i in 0 until mHeight) {
                var t = 0
                while (t < mWidth / 8) {
                    val c0 = nbm.getPixel(t * 8 + 0, i)
                    val p0: Byte = if (c0 == -1) {
                        0
                    } else {
                        1
                    }

                    val c1 = nbm.getPixel(t * 8 + 1, i)
                    val p1: Byte = if (c1 == -1) {
                        0
                    } else {
                        1
                    }

                    val c2 = nbm.getPixel(t * 8 + 2, i)
                    val p2: Byte = if (c2 == -1) {
                        0
                    } else {
                        1
                    }

                    val c3 = nbm.getPixel(t * 8 + 3, i)
                    val p3: Byte = if (c3 == -1) {
                        0
                    } else {
                        1
                    }

                    val c4 = nbm.getPixel(t * 8 + 4, i)
                    val p4: Byte = if (c4 == -1) {
                        0
                    } else {
                        1
                    }

                    val c5 = nbm.getPixel(t * 8 + 5, i)
                    val p5: Byte = if (c5 == -1) {
                        0
                    } else {
                        1
                    }

                    val c6 = nbm.getPixel(t * 8 + 6, i)
                    val p6: Byte = if (c6 == -1) {
                        0
                    } else {
                        1
                    }

                    val c7 = nbm.getPixel(t * 8 + 7, i)
                    val p7: Byte = if (c7 == -1) {
                        0
                    } else {
                        1
                    }

                    val value = p0 * 128 + p1 * 64 + p2 * 32 + p3 * 16 + p4 * 8 + p5 * 4 + p6 * 2 + p7.toInt()
                    mBitBuff?.set(t, value.toByte())
                    ++t
                }

                t = 0
                while (t < this.width / 8) {
                    ++ext
                    imgbuf[ext] = mBitBuff?.get(t) ?: 0
                    ++t
                }
            }

            return imgbuf
        }
...