如何用java代码生成二维码?

2025-10-27 19:24:48

1、在pom.xml中引入依赖的架包

<dependency>

    <groupId>com.google.zxing</groupId>

    <artifactId>core</artifactId>

    <version>3.3.0</version>

</dependency>

<dependency>  

        <groupId>com.google.zxing</groupId>  

        <artifactId>javase</artifactId>  

        <version>3.0.0</version>  

    </dependency>

如何用java代码生成二维码?

2、<dependency>

    <groupId>log4j</groupId>

    <artifactId>log4j</artifactId>

    <version>1.2.17</version>

</dependency>

<dependency>

    <groupId>junit</groupId>

    <artifactId>junit</artifactId>

    <version>4.12</version>

</dependency>

<dependency>

    <groupId>org.apache.commons</groupId>

    <artifactId>commons-lang3</artifactId>

    <version>3.4</version>

</dependency>

3、public class QRCodeUtil {

private static final String CHARSET = "UTF-8";  

    private static final String FORMAT_NAME = "JPG";  

    // 二维码尺寸  

    private static final int QRCODE_SIZE = 200;  

    // LOGO宽度  

    private static final int WIDTH = 60;  

    // LOGO高度  

    private static final int HEIGHT = 60; 

    

    /**

     * TODO 创建二维码图片

     */

    private static BufferedImage createImage(String content, String logoImgPath, boolean needCompress) throws WriterException, IOException {

    Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();  

        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);  

        hints.put(EncodeHintType.CHARACTER_SET, CHARSET);  

        hints.put(EncodeHintType.MARGIN, 1);  

        BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, QRCODE_SIZE, QRCODE_SIZE, hints);  

        int width = bitMatrix.getWidth();  

        int height = bitMatrix.getHeight();  

        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);  

        for (int x = 0; x < width; x++) {  

            for (int y = 0; y < height; y++) {  

                image.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);  

            }  

        }  

        if (logoImgPath == null || "".equals(logoImgPath)) {  

            return image;  

        }  

        

        // 插入图片  

        QRCodeUtil.insertImage(image, logoImgPath, needCompress);  

        return image;  

    }

    

如何用java代码生成二维码?

1、    /**

   

     * TODO 添加Logo

     */

    private static void insertImage(BufferedImage source, String logoImgPath, boolean needCompress) throws IOException{

    File file = new File(logoImgPath);  

        if (!file.exists()) {  

            return;  

        }  

        

      

如何用java代码生成二维码?

2、  Image src = ImageIO.read(new File(logoImgPath));  

        int width = src.getWidth(null);  

        int height = src.getHeight(null);  

        if (needCompress) { // 压缩LOGO  

            if (width > WIDTH) {  

                width = WIDTH;  

            }  

            

            if (height > HEIGHT) {  

                height = HEIGHT;  

            }  

            

            Image image = src.getScaledInstance(width, height, Image.SCALE_SMOOTH);  

            BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);  

            Graphics g = tag.getGraphics();  

            g.drawImage(image, 0, 0, null); // 绘制缩小后的图  

            g.dispose();  

            src = image;  

        }  

        

        // 插入LOGO  

        Graphics2D graph = source.createGraphics();  

        int x = (QRCODE_SIZE - width) / 2;  

        int y = (QRCODE_SIZE - height) / 2;  

        graph.drawImage(src, x, y, width, height, null);  

        Shape shape = new RoundRectangle2D.Float(x, y, width, width, 6, 6);  

        graph.setStroke(new BasicStroke(3f));  

        graph.draw(shape);  

        graph.dispose();  

    }

    

    

如何用java代码生成二维码?

3、/**

    

     * TODO 生成带Logo的二维码

     */

    public static void encode(String content, String logoImgPath, String destPath, boolean needCompress) throws Exception {  

        BufferedImage image = QRCodeUtil.createImage(content, logoImgPath, needCompress);  

        FileUtil.mkdirs(destPath);  

        ImageIO.write(image, FORMAT_NAME, new File(destPath));  

    }   

    

    /**

     

     * TODO 生成不带Logo的二维码

     */

    public static void encode(String content, String destPath) throws Exception {  

        QRCodeUtil.encode(content, null, destPath, false);  

    }  

    

    /**

     

     * TODO 生成带Logo的二维码,并输出到指定的输出流

     */

    public static void encode(String content, String logoImgPath, OutputStream output, boolean needCompress) throws Exception {  

        BufferedImage image = QRCodeUtil.createImage(content, logoImgPath, needCompress);  

        ImageIO.write(image, FORMAT_NAME, output);  

    }  

    

    /**

   

     * TODO 生成不带Logo的二维码,并输出到指定的输出流

     */

    public static void encode(String content, OutputStream output) throws Exception {  

        QRCodeUtil.encode(content, null, output, false);  

    }  

    

  

如何用java代码生成二维码?

4、  /**

    

     * TODO 二维码解析

     */

    public static String decode(File file) throws Exception {  

        BufferedImage image;  

        image = ImageIO.read(file);  

        if (image == null) {  

            return null;  

        }  

        BufferedImageLuminanceSource source = new BufferedImageLuminanceSource(image);  

        BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));  

        Result result;  

        Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>();  

        hints.put(DecodeHintType.CHARACTER_SET, CHARSET);  

        result = new MultiFormatReader().decode(bitmap, hints);  

        String resultStr = result.getText();  

        return resultStr;  

    }  

   

如何用java代码生成二维码?

5、 

    /**

    

     * TODO 二维码解析

     */

    public static String decode(String path) throws Exception {  

        return QRCodeUtil.decode(new File(path));  

    } 

}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢