将QRModeWriter的BitMatrix输出转换为字节数组?

时间:2017-04-06 12:34:19

标签: java qr-code zxing

我有一个API,前端(PHP)调用它来生成QR码。 QR码作为字节数组(byte[])发回。目前,我们正在使用付费库,可以将qr代码呈现为OutputStream,就像ByteArrayOutputStream一样。但是这个库不支持某些UTF-8字符,这对我们造成了问题。通过ZXing的QR代码生成过程,我们注意到在包含QR代码的编码之前,可以在哈希表中指定字符集。

我们希望尽可能少地更改现有功能。因此想知道是否可以将QRCodeWriter.encode方法的BitMatrix输出转换为字节数组?

2 个答案:

答案 0 :(得分:2)

您可以通过查看课程com.google.zxing.client.j2se.MatrixToImageWriterfile on github)找到一些阅读和转换BitMatrix的示例代码

答案 1 :(得分:1)

这是一个快速实现:

import com.google.zxing.qrcode.QRCodeWriter
import com.google.zxing.client.j2se.MatrixToImageWriter

val bitMatrix = qrCodeGenerator.encode("text", BarcodeFormat.QR_CODE, 300, 300)
val os = OutputStream()
MatrixToImageWriter.writeToStream(bitMatrix, "PNG", os)
// do whatever with `os`

不要忘记更新build.gradle

// ...
dependencies {
    // ...
    implementation 'com.google.zxing:core:3.4.1'
    implementation 'com.google.zxing:javase:3.4.1'
}
// ...