1. 程式人生 > 其它 >java 根據url 生成二維碼

java 根據url 生成二維碼

 /**
     * 生成不帶白邊的二維碼
     *
     * @param content 二維碼內容(目標url)
     * @param qrCodePath 生成的二維碼地址(最終儲存地址)
     * @throws Exception 異常
     */
    public static void generatorQrCode(String content, String qrCodePath) throws Exception {
        Map<EncodeHintType, Object> hints = new HashMap<>();
        hints.put(EncodeHintType.MARGIN, 
0); BitMatrix bitMatrix = new QRCodeWriter().encode(content, BarcodeFormat.QR_CODE, 256, 256, hints); // 去白邊 int[] rec = bitMatrix.getEnclosingRectangle(); int resWidth = rec[2] + 1; int resHeight = rec[3] + 1; BitMatrix resMatrix = new BitMatrix(resWidth, resHeight); resMatrix.clear();
for (int i = 0; i < resWidth; i++) { for (int j = 0; j < resHeight; j++) { if (bitMatrix.get(i + rec[0], j + rec[1])) { resMatrix.set(i, j); } } } int width = resMatrix.getWidth(); int height = resMatrix.getHeight(); BufferedImage image
= new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { if (resMatrix.get(x, y)) { // image.setRGB(x, y, Color.BLACK.getRGB()); image.setRGB(x, y, -16777216); } else { // image.setRGB(x, y, Color.WHITE.getRGB()); image.setRGB(x, y, -1); } } } ImageIO.write(image, "png", new File(qrCodePath)); }


@Test
    public void test() {
        String qrCodePath = "https://www.baidu.com";
        String qrCodeLocalPath = "C:\\Users\\Administrator\\Pictures\\測試\\百度首頁22.png";
        try {
            generatorQrCode(qrCodePath, qrCodeLocalPath);
        } catch (Exception e) {
            log.info("error :{}", JSON.toJSON(e));
        }
    }