2013-02-01 183 views
0

我目前使用的斑馬線-1.6和我遇到了來自QRCodeWriter類此位的代碼的一部分問題安靜斑馬線QRCode的

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; 

}

問題是,當我得到的DataMatrix尺寸的是像60x60和輸出矩陣應該像100X100我得到了大量的空白區域和安靜的區域,我想你是用int變量操作,因爲它不可能有像3.23一樣的datamarix點頭大小,它應該是整數。 你能幫我一下,給我一些猜測或指向我的地方,它已經討論過了。

回答

0

已經在郵件列表中回覆 - 這是一個非常舊的版本,請使用更新的東西。是的,有一個最小余量,並且,模塊的大小必須是像素的整數倍。這可以使它比平常小。這是正常的;否則圖像會失真。