zoukankan      html  css  js  c++  java
  • Java生成二维码

    单元测试版:

    导入jar包:

    链接:https://pan.baidu.com/s/1qR4Mh0pwBAhpzx5gqCXDHg
    提取码:a1qa
    导入里面的zxing3.2.1.jar包

    Java代码:

     

    package ewm.test;
    
    import java.io.File;
    import java.nio.file.Path;
    import java.util.HashMap;
    
    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.EncodeHintType;
    import com.google.zxing.MultiFormatWriter;
    import com.google.zxing.client.j2se.MatrixToImageWriter;
    import com.google.zxing.common.BitMatrix;
    import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
    
    public class Demo {
    
    	public static void main(String[] args) {
    		if (orCode("https://www.ak1ak1.com/catalog.html", "F:\\1.jpg")) {
                System.out.println("ok,成功");
            } else {
                System.out.println("no,失败");
            }
    	}
    	
    	private static boolean orCode(String content, String path) {
            /*
             * 图片的宽度和高度
             */
            int width = 300;
            int height = 300;
            // 图片的格式
            String format = "png";
            // 二维码内容
            // String content = "hello,word";
            // 定义二维码的参数
            HashMap hints = new HashMap();
            // 定义字符集编码格式
            hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
            // 纠错的等级 L > M > Q > H 纠错的能力越高可存储的越少,一般使用M
            hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
            // 设置图片边距
            hints.put(EncodeHintType.MARGIN, 2);
            try {
                // 最终生成 参数列表 (1.内容 2.格式 3.宽度 4.高度 5.二维码参数)
                BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);
                // 写入到本地
                Path file = new File(path).toPath();
                MatrixToImageWriter.writeToPath(bitMatrix, format, file);
                return true;
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
    
        }
    	
    }
    

    web版本:

    导入maven依赖

    <dependency>
    		   <groupId>com.google.zxing</groupId>
    		   <artifactId>core</artifactId>
    		   <version>3.3.3</version>
    		   <scope>compile</scope>
    		</dependency>
    		<dependency>
    		   <groupId>com.google.zxing</groupId>
    		   <artifactId>javase</artifactId>
    		   <version>3.3.3</version>
    		   <scope>compile</scope>
    		</dependency>
    

    Java代码:

    public void dowanload(@PathVariable Long id,HttpServletRequest request,HttpServletResponse response) throws Exception {
    		Project project = JSON.parseObject(JSONObject.toJSONString(getProject(id).getData(), true),Project.class);
    	    //二维码中包含的信息
    	    String content = project.getPageUrl() + "&" + project.getProjectID();
    	    Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();
    	    // 指定编码格式
    	    hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
    	    // 指定纠错级别(L--7%,M--15%,Q--25%,H--30%)
    	    hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
    	    // 编码内容,编码类型(这里指定为二维码),生成图片宽度,生成图片高度,设置参数
    	    BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, 200, 200, hints);
    	    //设置请求头
    	    response.setHeader("Content-Type","application/octet-stream");
    	    response.setHeader("Content-Disposition", "attachment;filename=" + project.getProjectID() + ".png");
    	    OutputStream outputStream = response.getOutputStream();
    	    MatrixToImageWriter.writeToStream(bitMatrix, "png", outputStream);
    	    outputStream.flush();
    	    outputStream.close();
    	}
    

      

  • 相关阅读:
    swagger序列化对example属性的特殊处理造成的json格式异常问题
    Elasticsearch 6.2.4 xpack白金版破解-仅供交流学习使用
    Logback多进程写入同一日志文件时滚动日期混乱问题
    mycat事务中上来执行select马上提交——小猫如此折腾,我选dble
    我家很管事的猫——mycat初步部署实践与问题排查
    certbot https签发证书与自动更新——acme实在太难用,certbot一键式全搞定
    自力更生Collections.sort发现比较结果混乱?Comparator的锅还是强转类型导致?
    Java SPI、servlet3.0与@HandlesTypes源码分析
    真——Springcloud支持Https
    Controller层的方法访问标志与Spring装配与AspectJ切面处理
  • 原文地址:https://www.cnblogs.com/hjieone/p/11531570.html
Copyright © 2011-2022 走看看