关于使用Zxing生成二维码的一些调整

来源:互联网 发布:vb中range对象 编辑:程序博客网 时间:2024/05/22 02:20

说明:

1.生成二维码的代码

2.去空白边框,网上的代码有bug,我做了修改

package dagx.data.pictool;import java.io.File;import java.util.HashMap;import java.util.Map;import com.google.zxing.BarcodeFormat;import com.google.zxing.EncodeHintType;import com.google.zxing.MultiFormatWriter;import com.google.zxing.common.BitMatrix;import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;import dagx.data.utils.PropertiesUtil;public class TwoDimensionCode {/** * 生成二维码(QRCode)图片 * @param content 存储内容 * @param imgPath 图片路径 * @throws Exception  */public static void encoderQRCode(String content, String imgPath) throws Exception {MultiFormatWriter multiFormatWriter = new MultiFormatWriter();Map hints = new HashMap();hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");hints.put(EncodeHintType.MARGIN, 0);hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);int width = Integer.parseInt(PropertiesUtil.getValue("width"));int height = Integer.parseInt(PropertiesUtil.getValue("height"));BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, width, height, hints);bitMatrix = updateBit(bitMatrix, 2);MatrixToImageWriter.writeToFile(bitMatrix, "PNG", new File(imgPath));}/** * 去掉空白的边框 * @param matrix * @param margin * @return */private static BitMatrix updateBit(BitMatrix matrix, int margin) {int tempM = margin * 2;int[] rec = matrix.getEnclosingRectangle(); // 获取二维码图案的属性int resWidth = rec[2] + tempM;int resHeight = rec[3] + tempM;BitMatrix resMatrix = new BitMatrix(resWidth, resHeight); // 按照自定义边框生成新的BitMatrixresMatrix.clear();for (int i = margin; i < resWidth; i++) { // 循环,将二维码图案绘制到新的bitMatrix中for (int j = margin; j < resHeight; j++) {if (matrix.get(i - margin + rec[0], j - margin + rec[1])) {resMatrix.set(i, j);}}}return resMatrix;}}
0 0
原创粉丝点击