我目前正在使用ZXing Library来解码QR码。另外我用JavaFx在屏幕上显示创建的QR码。我想创建没有安静区域的QR码,所以我将边距设置为零。但是我意识到,当我创建一个具有错误校正级别L的QR码时,仍然存在一个小的静区。这是显示结果的图片。
现在奇怪的是具有错误修正等级的QR码没有安静区域。
以下是我创建QR码的代码。
private BufferedImage QRCodeGenerator(String content, int height, int width) {
Map<EncodeHintType, Object> hintMap = new EnumMap<EncodeHintType, Object>(EncodeHintType.class);
hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
hintMap.put(EncodeHintType.MARGIN, 0);
QRCodeWriter qrCodeWriter = new QRCodeWriter();
BufferedImage bufferedImage = null;
try {
BitMatrix byteMatrix = qrCodeWriter.encode(content, BarcodeFormat.QR_CODE, width, height, hintMap);
bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
bufferedImage.createGraphics();
Graphics2D graphics = (Graphics2D) bufferedImage.getGraphics();
graphics.setColor(Color.WHITE);
graphics.fillRect(0, 0, width, height);
graphics.setColor(Color.BLACK);
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
if (byteMatrix.get(i, j)) {
graphics.fillRect(i, j, 1, 1);
}
}
}
} catch (WriterException e) {
}
return bufferedImage;
}
有人可以解释这种行为吗?