• 识别二维码


    一、pom

    <dependency>
                <groupId>com.google.zxing</groupId>
                <artifactId>core</artifactId>
                <version>3.3.3</version>
            </dependency>
            <dependency>
                <groupId>com.google.zxing</groupId>
                <artifactId>javase</artifactId>
                <version>3.3.3</version>
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-generator</artifactId>
                <version>3.3.0</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.28</version>
            </dependency>
            <dependency>
                <groupId>commons-beanutils</groupId>
                <artifactId>commons-beanutils</artifactId>
                <version>1.9.3</version>
            </dependency>
            <dependency>
                <groupId>commons-collections</groupId>
                <artifactId>commons-collections</artifactId>
                <version>3.2.1</version>
            </dependency>
            <dependency>
                <groupId>commons-lang</groupId>
                <artifactId>commons-lang</artifactId>
                <version>2.6</version>
            </dependency>
            <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>1.1.1</version>
            </dependency>
            <dependency>
                <groupId>net.sf.ezmorph</groupId>
                <artifactId>ezmorph</artifactId>
                <version>1.0.6</version>
            </dependency>
            <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.2.3</version>
            <classifier>jdk15</classifier>
            </dependency>

    二、识别两种方式

    方式一:

    package com.roncoo.mybatis.generator;
    
    import com.alibaba.fastjson.JSON;
    import com.google.zxing.*;
    import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
    import com.google.zxing.common.HybridBinarizer;
    import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
    import net.sf.json.JSONObject;
    
    import javax.imageio.ImageIO;
    import java.awt.image.BufferedImage;
    import java.io.*;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.nio.file.Path;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    /**
     * @author ZhangRF
     */
    public class JianSuo {
    
        public static String getJsonData(JSONObject jsonParam, String urls, String access_token) {
            StringBuffer sb=new StringBuffer();
            urls += access_token;
            try {
                // 创建url资源
                URL url = new URL(urls);
                // 建立http连接
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                // 设置允许输出
                conn.setDoOutput(true);
                // 设置允许输入
                conn.setDoInput(true);
                // 设置不用缓存
                conn.setUseCaches(false);
                // 设置传递方式
                conn.setRequestMethod("POST");
                // 设置维持长连接
                conn.setRequestProperty("Connection", "Keep-Alive");
                // 设置文件字符集:
                conn.setRequestProperty("Charset", "UTF-8");
                // 转换为字节数组
                byte[] data = (jsonParam.toString()).getBytes();
                // 设置文件长度
                conn.setRequestProperty("Content-Length", String.valueOf(data.length));
                // 设置文件类型:
                conn.setRequestProperty("contentType", "application/json");
                // 开始连接请求
                conn.connect();
                OutputStream out = new DataOutputStream(conn.getOutputStream()) ;
                // 写入请求的字符串
                out.write((jsonParam.toString()).getBytes());
                out.flush();
                out.close();
                // 请求返回的状态
                if (HttpURLConnection.HTTP_OK == conn.getResponseCode()){
                    // 请求返回的数据
                    InputStream in1 = conn.getInputStream();
                    try {
                        String readLine=new String();
                        BufferedReader responseReader=new BufferedReader(new InputStreamReader(in1,"UTF-8"));
                        while((readLine=responseReader.readLine())!=null){
                            sb.append(readLine).append("
    ");
                        }
                        responseReader.close();
                    } catch (Exception e1) {
                        e1.printStackTrace();
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return sb.toString();
        }
        public static void main(String[] args) throws Exception {
            //定义二维码的参数
            HashMap hints = new HashMap();
            hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
            //L级:约可纠错7%的数据码字,M级:约可纠错15%的数据码字,Q级:约可纠错25%的数据码字,H级:约可纠错30%的数据码字
            hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.Q);
            hints.put(EncodeHintType.MARGIN, 2);
    
            Path file = new File("C:\Users\Administrator\Desktop\123.jpg").toPath();
            MultiFormatReader formatReader = new MultiFormatReader();
            BufferedImage image = ImageIO.read(file.toFile());
            BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));
            Result result = formatReader.decode(binaryBitmap, hints);
            System.out.println("二维码解析结果:" + result.toString());
            System.out.println("二维码的格式:" + result.getBarcodeFormat());
            System.out.println("二维码的文本内容:" + result.getText());
    
            Map<String,Object> map = new HashMap<>();
            map.put("begin_date","2018-11-01");
            map.put("end_date","2018-11-01");
    //        String outStr = JsonUtil.mapToJson(map);
            //map转json对象
            String outStr = JSON.toJSONString(map);
            String s = getJsonData(JSONObject.fromObject(outStr),
                    result.toString(),
                    "access_token");
    //        Map maps=(Map) JSON.parse(s);
            System.out.println(s);
    //        System.out.println(maps.get("list").toString());
    //        List<Map<String, Object>> mapList = JsonUtil.parseJSONList(maps.get("list").toString());
        }
    }

    方式二、

    package com.roncoo.mybatis.generator;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.MalformedURLException;
    import java.net.URL;
    /**
     * 通过URL读取页面内容
     * */
    
    public class MyClass {
    
        public static void main(String[] args){
    
            System.out.println("hello world !!!");
    
            try {
                //创建一个URL实例
                URL url = new URL("https://weixin110.qq.com/s/06906701888");
    
                try {
                    //通过URL的openStrean方法获取URL对象所表示的自愿字节输入流
                    InputStream is = url.openStream();
                    InputStreamReader isr = new InputStreamReader(is,"utf-8");
    
                    //为字符输入流添加缓冲
                    BufferedReader br = new BufferedReader(isr);
                    String data = br.readLine();//读取数据
    
                    while (data!=null){//循环读取数据
                        System.out.println(data);//输出数据
                        data = br.readLine();
                    }
                    br.close();
                    isr.close();
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    SQL GUID和自增列做主键的优缺点
    python __future__ 的几种特性
    数据库中文乱码处理
    Android_Intent意图详解
    Windows Server 2012 R2超级虚拟化之六 Hyper-v Replica 2.0和Live migrations
    如今网站定位,需立足于用户
    Hibernate 数据的批量插入、更新和删除
    paip.提升用户体验---论文本编辑器的色彩方案
    时间管理方法学习
    网站优化:从搜索引擎到社交网络的艰难转变
  • 原文地址:https://www.cnblogs.com/zhangrongfei/p/12888292.html
Copyright © 2020-2023  润新知