初级(上) 二维码的生成

2023-10-26

吼吼,阳仔的第一篇博客开写啦,以下的内容都是我从imooc上面听课的总结,当然是只针对二维码,作为一个初级程序媛,也是要坚持学习的。

首先,谢谢imooc网上的老师发放的免费视频,让我自己有了一些简单的了解,

接下来,就把我的总结贴出来吧:

第一

    二维码的分类:
         线性堆叠式二维码:建立在一条维码基础之上,按需要堆积成两条或多条,主要有:pdf417 ultraclode code 49  code16k
         矩阵式二维码:QRCode (最长用到的)
         邮政码
为什么QRCode是最长用到的呢?
下面举些常用的二维码格式进行对比:
     PDF417:不支持中文
     DM:专利未公开,需支付专利费用
     QR code:专利公开,支持中文。
                   优点:与其他二维码相比,识读速度快,数据密度大,占用空间小的优势。
接下来介绍一下QRCode:
QR Code 是由日本Denso公司于1994年研制的一种矩阵二维码符号码,
                    全称是:quick response code 
                   纠错能力有4级:L级:约可纠错7%的数据码字
                                                      M级:15%
                                                      Q级:25%
                                                      H级:30%
                        纠错能力越高,可存储的就越少
生成二维码的三种方式:
01:
借助第三方jar:zxing(谷歌研发的)和qrcodejar
               实例:     https://github.com/zxing/
               下载源码

01.01提取zxing-zxing-3.3.0 中core包和javase包中的com文件夹下的内容,
有很多android的文件夹,可以不用管,忽略。因为,咱主要不是那个方向的


01.02 eclipse新建java project 命名为zxing(这个当然是自己想取什么就取什么名字)
src目录下面将zxing-zxing-3.3.0 中core包和javase包中的com文件夹下的内容放了进去

01.03 将zxing项目导出jar包

01.04  新建java project   并将之前打的zxing.jar放入其中

01.05
接下来开始编码啦:
生成二维码
package com.imooc.zxing;

import java.io.File;
import java.io.UnsupportedEncodingException;
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.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

/**
 * 生成二维码
 *
 * @author yuliyang
 * @version $Id: CreateQRCode.java, v 0.1 2016年11月13日 下午1:26:37 阳仔 Exp $
 */
public class CreateQRCode {
    public static void main(String[] args) throws UnsupportedEncodingException {
        int width =300;
        int height = 300;
        //图片格式
        String format = "png";
        //内容
        String content = "www.baidu.com";
        //定义二维码
        HashMap map = new HashMap();
        //字符
        map.put(EncodeHintType.CHARACTER_SET, "gb2312");
        //纠错能力
        map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
        //边框大小
        map.put(EncodeHintType.MARGIN, 2);
        
        //开始生成
        try {
            BitMatrix bitMatrix = new MultiFormatWriter().encode(
                content, BarcodeFormat.QR_CODE, width, height);
            File file = new File("D:/zxingimg/img1.png");
            //如果文件不存在,则创建
            if(!file.exists()){
                file.mkdirs();
            }
            MatrixToImageWriter.writeToFile(bitMatrix, format, file);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
直接运行之后,在你的D:/zxingimg 目录下面就会看见img.png 了,拿出手机扫一扫,就可以了
是不是超级简单。。。。
二:我们还可以解析二维码:
package com.imooc.zxing;

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.HashMap;

import javax.imageio.ImageIO;

import com.google.zxing.Binarizer;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.EncodeHintType;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.NotFoundException;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.BitArray;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;
/**
 * 解析二维码图片
 *
 * @author yuliyang
 * @version $Id: ReadQRCode.java, v 0.1 2016年11月13日 下午2:19:38 阳仔 Exp $
 */
public class ReadQRCode {
    public static void main(String[] args) {
        try {
        MultiFormatReader formatReader = new MultiFormatReader();
        //获取二维码图片
        File file = new File("D:/zxingimg/qrcode1.png");
        BufferedImage image = ImageIO.read(file);
        BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(
            new BufferedImageLuminanceSource(image)));
        HashMap hints = new HashMap<>();
        hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
        Result result = formatReader.decode(binaryBitmap, hints);
        System.out.println("解析结果:"+result.toString());
        System.out.println("二维码格式类型:"+result.getBarcodeFormat());
        System.out.println("二维码文本内容:"+result.getText());
        } catch (Exception e) {
           e.printStackTrace();
        }
        
    }
}
解析结果:


ok 到现在为止,第一种方法就成功啦!!!




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初级(上) 二维码的生成 的相关文章

随机推荐

  • 到处是“坑”的strtok()—解读strtok()的隐含特性

    在用C C 实现字符串处理逻辑时 strtok函数的使用非常广泛 其主要作用是按照给定的字符集分隔字符串 并返回各子字符串 由于该函数的使用有诸多限制 如果使用不当就会造成很多 坑 因此本文首先介绍那些经常误踩的坑 然后通过分析源代码 解读
  • Android——第三方Facebook授权登录获取用户信息

    由于项目中需要使用Facebook进行一键登录 所以记录下步骤 其实小伙伴直接看官网也可以 介绍的蛮详细的 先看下效果图吧 遵循以下步骤将Facebook登录添加到您的应用 Facebook开发者网站 https developers fa
  • bin文件转成C语言数组之c代码

    反汇编的时候用的着 include
  • Js弹出showModalDialog窗口---返回值或数组

    function showMyModalDialog url width height showModalDialog url dialogWidth width px dialogHeight height px center yes s
  • ACwing :01背包问题

    朴素的 动规的 基本表示 f i j 表示只看前 i 个物品 总体积是 j 的情况下 总价值最大是多少 result max f n 0 V f i j 1 不选第 i 个物品 f i j f i 1 j 2 选第 i个物品 f i j f
  • ubuntu 如何使用 root 用户

    环境 virtual box 6 1 ubuntu 1604 LTS 64 问题 一般的ubuntu会创建一个管理员用户 在使用 su 指令从管理员切换到root用户后 设在 etc profile的环境变量丢失 如何才能保证环境变量不变呢
  • Android开发中怎么实现上传图片到服务器

    要实现在Android开发中上传图片到服务器 可以按照以下步骤进行 1 在Android项目中添加相应的权限 确保应用程序可以访问设备上的照片或相机 在 AndroidManifest xml 文件中添加以下权限
  • linux服务端下的c++ udp socket demo

    linux服务端 udp socket demo 如下 创建接受数据的socket int iSock socket PF INET SOCK DGRAM 0 printf socket ss d n iSock struct sockad
  • 三种基于CUDA的归约计算

    归约在并行计算中很常见 并且在实现上具有一定的套路 本文分别基于三种机制 Intrinsic 共享内存 atomic 实现三个版本的归约操作 完成一个warp 32 大小的整数数组的归约求和计算 Intrinsic版本 基于Intrinsi
  • 网站视频服务器架设,云服务器架设网站视频教程

    云服务器架设网站视频教程 内容精选 换一换 安装MySQL本文档以 CentOS 6 5 64bit 40GB 操作系统为例 对应MySQL版本为5 1 73 CentOS 7及以上版本将MySQL数据库软件从默认的程序列表中移除 需执行s
  • Keil常见错误警告

    1 warning 767 D conversion from pointer to smaller integer 解释 将指针转换为较小的整数 影响 可能造成的影响 容易引起数据截断 造成不必要的数据丢失 如果出现 bug 很难 调试
  • mybatis 的mapper接口注入到spring 容器的源码解析

    一 环境准备 1 创建一个maven 项目 其POM文件如下
  • pytorch笔记12--无监督的AutoEncoder(自编码)

    1 AutoEncoder 给特征属性降维 2 Data gt 压缩 提取Data的关键信息 减小网络的运算压力 gt data 具有代表性的特征 gt 解压 还原数据信息 gt Pred Data 3 使用Mnist数据集训练 将数据先压
  • CentOS7安装wps

    第一步 首先到wps官网 http linux wps cn 下载 wps for linux 选择合适自己的系统位数的rpm包 如下图所示 第二步 打开终端 cd进入文件下载的路径 我下载的存放路径是 home zjh Downloads
  • 大数据课程L4——网站流量项目的Hive离线批处理

    文章作者邮箱 yugongshiye sina cn 地址 广东惠州 本章节目的 掌握网站流量项目的 Hive 的占位符与文件的调用 掌握网站流量项目的 Hive 离线批处理过程 掌握网站流量项目的定时任务改造Hive离线处理过程 一 Hi
  • 数据库设计——关系数据理论(超详细)

    问题 什么是一个好的数据库逻辑设计 关系型数据库逻辑设计 针对一个具体问题应如何构造一个适合于它的数据模式 即应构造几个关系 每个关系由哪些属性组成等 eg 这样的设计是一个好的设计吗 观察这个表所对应的一个实例 在某个时刻student模
  • 域名服务器中存放主机的什么位置,域名服务器中存放主机的域名

    域名服务器中存放主机的域名 内容精选 换一换 本文档重点介绍在CCE容器中如何配置域名解析 在创建相应的后端工作负载 Deployment或ReplicaSet 以及在需要访问它的任何工作负载之前创建服务 当Kubernetes启动容器时
  • 基于Python的淘宝自动回复助手

    前言 看到有人从blink上发需要用python做一个类似于淘宝自动回复助手的作业 好久没玩python了 就写了一下 实现了 1 退货 2 查库存 3 商品查看 这三个功能 整理一下心路历程 搞到一份源码 def find answer
  • 安装 Django1.11

    Django1 11 安装Django的步骤 联网 在命令行窗口中直接运行 pip install django 1 11 i https pypi tuna tsinghua edu cn simple 或使用离线方式安装 执行命令 pi
  • 初级(上) 二维码的生成

    吼吼 阳仔的第一篇博客开写啦 以下的内容都是我从imooc上面听课的总结 当然是只针对二维码 作为一个初级程序媛 也是要坚持学习的 首先 谢谢imooc网上的老师发放的免费视频 让我自己有了一些简单的了解 接下来 就把我的总结贴出来吧 第一