我正在使用ZXING库在JAVA中创建QR码生成器程序。该程序是
import com.google.zxing.BarcodeFormat;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Path;
public class QR_Gen {
private static final String QR_CODE_IMAGE_PATH = "./MyCode.png";
private static void generateQRCodeImage(String text, int width, int
height, String filePath) throws WriterException, IOException {
QRCodeWriter qrCodeWriter = new QRCodeWriter();
BitMatrix bitMatrix = qrCodeWriter.encode(text,
BarcodeFormat.QR_CODE, width, height);
Path path = FileSystems.getDefault().getPath(filePath);
MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path);
}
public static void main(String[] args) {
try {
generateQRCodeImage("This is my first QR Code", 350, 350, QR_CODE_IMAGE_PATH);
System.out.println("QR Code generated successfully");
} catch (WriterException e) {
System.out.println("Could not generate QR Code, WriterException :: " + e.getMessage());
} catch (IOException e) {
System.out.println("Could not generate QR Code, IOException :: " + e.getMessage());
}
}
}
在编译该程序时,出现类型不匹配错误,
Type mismatch: cannot convert from ByteMatrix to BitMatrix
在此行
BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height);
请帮助!!!
答案 0 :(得分:1)
根据javadoc here和源代码here,QRCodeWriter.encode
方法返回BitMatrix
而不是ByteMatrix
。因此,该编译错误不会发生。
除非....
...您正在使用com.google.zxing
库的某些版本 1 与这些javadocs不兼容。检查从哪里获得zxing JAR文件。
尽管进行了搜索,但仍无法找到与此不兼容的版本。但是:
我注意到官方库在GitHub上已经分叉了很多次,其中任何一个都可能是不兼容的原因。
我发现this显然是叉子,并且显然已经对encode
进行了调整。但是,这样做的人至少有很好的意识来更改程序包名称!
我不知道这是否相关,但是看来在该API的C#版本中,QRCodeWriter.encode
方法确实返回了ByteMatrix
;请参阅here以获取证据。也许您偶然发现有人错误地尝试“修复” Java API以匹配C#API。
答案 1 :(得分:0)
我自己从未使用过该库,但是阅读错误消息时,我会假设您必须要以字节为单位存储字节的问题。 问题将是一个字节由多个位组成,因此您不能仅通过一个位来表示一个字节。
将编码数据存储到ByteMatrix中,然后阅读这篇文章:
结束事情。
答案 2 :(得分:0)
我遇到了同样的问题,我通过下载兼容的zxing-javase.jar和zxing解决了
http://www.java2s.com/Code/Jar/z/Downloadzxingjavasejar.htm http://www.java2s.com/Code/Jar/z/Downloadzxingjar.htm
最新版本兼容并且使用ByteMatrix而不是BitMatrix。从原始的www.java2s.com下载它们