mirror of
https://github.com/zxing/zxing.git
synced 2025-03-05 20:48:51 -08:00
Added the quiet zone to the QRCodeWriter.
git-svn-id: https://zxing.googlecode.com/svn/trunk@733 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
parent
549771b3de
commit
a9b0be8b93
|
@ -33,6 +33,8 @@ import java.util.Hashtable;
|
||||||
*/
|
*/
|
||||||
public final class QRCodeWriter implements Writer {
|
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)
|
public ByteMatrix encode(byte[] contents, BarcodeFormat format, int width, int height)
|
||||||
throws WriterException {
|
throws WriterException {
|
||||||
|
|
||||||
|
@ -71,10 +73,16 @@ public final class QRCodeWriter implements Writer {
|
||||||
ByteMatrix input = code.matrix();
|
ByteMatrix input = code.matrix();
|
||||||
int inputWidth = input.width();
|
int inputWidth = input.width();
|
||||||
int inputHeight = input.height();
|
int inputHeight = input.height();
|
||||||
int outputWidth = Math.max(width, inputWidth);
|
int qrWidth = inputWidth + (QUIET_ZONE_SIZE * 2);
|
||||||
int outputHeight = Math.max(height, inputHeight);
|
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 leftPadding = (outputWidth - (inputWidth * multiple)) / 2;
|
||||||
int topPadding = (outputHeight - (inputHeight * multiple)) / 2;
|
int topPadding = (outputHeight - (inputHeight * multiple)) / 2;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue