From a9b0be8b93ddad690c793dd87af869537c52a637 Mon Sep 17 00:00:00 2001 From: dswitkin Date: Wed, 19 Nov 2008 16:39:59 +0000 Subject: [PATCH] Added the quiet zone to the QRCodeWriter. git-svn-id: https://zxing.googlecode.com/svn/trunk@733 59b500cc-1b3d-0410-9834-0bbf25fbcc57 --- core/src/com/google/zxing/qrcode/QRCodeWriter.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/core/src/com/google/zxing/qrcode/QRCodeWriter.java b/core/src/com/google/zxing/qrcode/QRCodeWriter.java index d72581327..24004e07c 100644 --- a/core/src/com/google/zxing/qrcode/QRCodeWriter.java +++ b/core/src/com/google/zxing/qrcode/QRCodeWriter.java @@ -33,6 +33,8 @@ import java.util.Hashtable; */ public final class QRCodeWriter implements Writer { + private static final int QUIET_ZONE_SIZE = 4; + public ByteMatrix encode(byte[] contents, BarcodeFormat format, int width, int height) throws WriterException { @@ -71,10 +73,16 @@ public final class QRCodeWriter implements Writer { ByteMatrix input = code.matrix(); int inputWidth = input.width(); int inputHeight = input.height(); - int outputWidth = Math.max(width, inputWidth); - int outputHeight = Math.max(height, inputHeight); + int qrWidth = inputWidth + (QUIET_ZONE_SIZE * 2); + int qrHeight = inputHeight + (QUIET_ZONE_SIZE * 2); + int outputWidth = Math.max(width, qrWidth); + int outputHeight = Math.max(height, qrHeight); - int multiple = Math.min(outputWidth / inputWidth, outputHeight / inputHeight); + int multiple = Math.min(outputWidth / qrWidth, outputHeight / qrHeight); + // Padding includes both the quiet zone and the extra white pixels to accomodate the requested + // dimensions. For example, if input is 25x25 the QR will be 33x33 including the quiet zone. + // If the requested size is 200x160, the multiple will be 4, for a QR of 132x132. These will + // handle all the padding from 100x100 (the actual QR) up to 200x160. int leftPadding = (outputWidth - (inputWidth * multiple)) / 2; int topPadding = (outputHeight - (inputHeight * multiple)) / 2;