0

私は現在 ZXing-1.6 を使用していますが、QRCodeWriter クラスのコードの一部で問題が発生しています。

private static BitMatrix renderResult(QRCode code, int width, int height) {
ByteMatrix input = code.getMatrix();
int inputWidth = input.getWidth();
int inputHeight = input.getHeight();
int qrWidth = inputWidth + (QUIET_ZONE_SIZE << 1);
int qrHeight = inputHeight + (QUIET_ZONE_SIZE << 1);
int outputWidth = Math.max(width, qrWidth);
int outputHeight = Math.max(height, qrHeight);

int multiple = Math.min(outputWidth / qrWidth, outputHeight / qrHeight);
// Padding includes both the quiet zone and the extra white pixels to accommodate 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;

BitMatrix output = new BitMatrix(outputWidth, outputHeight);

for (int inputY = 0, outputY = topPadding; inputY < inputHeight; inputY++, outputY += multiple) {
  // Write the contents of this row of the barcode
  for (int inputX = 0, outputX = leftPadding; inputX < inputWidth; inputX++, outputX += multiple) {
    if (input.get(inputX, inputY) == 1) {
      output.setRegion(outputX, outputY, multiple, multiple);
    }
  }
}

return output;

}

問題は、データマトリックスのサイズが 60x60 のようになり、出力マトリックスが 100X100 のようになる場合です3.23 であり、整数でなければなりません。私を助けて、いくつかの推測をするか、すでに議論されている場所を教えてください.

4

1 に答える 1

0

メーリング リストで既に回答済み -- これは非常に古いバージョンです。新しいものを使用してください。はい、最小マージンがあり、モジュールはピクセルの整数倍のサイズでなければなりません。これにより、通常よりも小さくすることができます。それは正常です。そうしないと、画像が歪んでしまいます。

于 2013-02-01T08:46:09.423 に答える