类型不匹配:无法从 ByteMatrix 转换为 BitMatrix
Type mismatch: cannot convert from ByteMatrix to BitMatrix
我正在 JAVA 使用 ZXING 库创建 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);
请帮忙!!!
我自己从未使用过这个库,但阅读错误消息我会假设你必须要以位存储字节的问题。
问题是一个字节是由多个位组成的,所以你不能只用一个位来表示一个字节。
将您的编码数据存储到 ByteMatrix 中,然后读取此 post:
- QR Code encoding and decoding using zxing
收尾。
根据 javadoc here and the source code here,QRCodeWriter.encode
方法 return 是 BitMatrix
,而不是 ByteMatrix
。所以,那个编译错误不应该发生。
除非....
...您正在使用与那些 javadoc 不兼容的 com.google.zxing
库的某些版本 1。检查你从哪里得到你的 zxing JAR 文件。
尽管进行了搜索,但我未能找到具有此不兼容性的版本。然而:
我注意到官方库已经在 GitHub 上分叉了很多次,其中任何一个 都可能是 不兼容的根源.
我发现 this 显然是一个分支,并且显然已经调整了 encode
。但是,这样做的人至少有改包名的良心!
我不知道这是否相关,但似乎在这个 API 的 C# 版本中,QRCodeWriter.encode
方法 确实 return一个ByteMatrix
;请参阅 here 以获取证据。也许您无意中发现有人错误地尝试 "fix" Java API 来匹配 C# API.
我遇到了同样的问题,我通过下载兼容的 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
下载
我正在 JAVA 使用 ZXING 库创建 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);
请帮忙!!!
我自己从未使用过这个库,但阅读错误消息我会假设你必须要以位存储字节的问题。 问题是一个字节是由多个位组成的,所以你不能只用一个位来表示一个字节。
将您的编码数据存储到 ByteMatrix 中,然后读取此 post:
- QR Code encoding and decoding using zxing
收尾。
根据 javadoc here and the source code here,QRCodeWriter.encode
方法 return 是 BitMatrix
,而不是 ByteMatrix
。所以,那个编译错误不应该发生。
除非....
...您正在使用与那些 javadoc 不兼容的 com.google.zxing
库的某些版本 1。检查你从哪里得到你的 zxing JAR 文件。
尽管进行了搜索,但我未能找到具有此不兼容性的版本。然而:
我注意到官方库已经在 GitHub 上分叉了很多次,其中任何一个 都可能是 不兼容的根源.
我发现 this 显然是一个分支,并且显然已经调整了
encode
。但是,这样做的人至少有改包名的良心!
我不知道这是否相关,但似乎在这个 API 的 C# 版本中,QRCodeWriter.encode
方法 确实 return一个ByteMatrix
;请参阅 here 以获取证据。也许您无意中发现有人错误地尝试 "fix" Java API 来匹配 C# API.
我遇到了同样的问题,我通过下载兼容的 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
下载