转自:imooc 慕课网

QR Code

流行的三大国际标准

PDF47:不支持中文

DM:专利未公开,需支付专利费用

QRCode:专利公开,支持中文(Quick Response code)

纠错能力

L级:约可就错7%的数据码字

M:15%

Q:25%

H:30%

就算把二维码花掉一部分,丢失一部分也可以识别。

纠错能力越高,存储的数据越少,清晰度要求越底。

三个方框:位置探测图形

定位,校正,版本信息

增加一个版本,增加4个模块

JSP生成二维码的方法

1:借助第三方的jar,如zxing(谷歌), qrcodejar

2:javascript,如jquery.qrcode.js

zxing:

https://github.com/zxing/

点击release去下载所需的版本

这个是谷歌为安卓写的

java相关的两个目录

core里面是二维码的java文件

javase里面是java类:GUIRunner....

zxing他没有相关的jar包,考到项目中的话,耦合度太高

操作:

1.新建项目

2.把com包考到src下

3.把javase/下的com包也拷贝过来

4.有错无,别管,项目右键导出jar包 java/jar file

5.jar包保存到本地,然后删除这个没意义的项目

试一试:

1.建立新的工程

2.工程下建一个新的文件夹lib,把包导入,build path

3.写代码

//生成二维码
public class CreateQRCode{

public static void main(String[] args){

//指定大小
int width = 300;
int height = 300;
String format = "png";
String content = "www.baidu.com";

//定义二维码的参数
HashMap hints = new HashMap();
hints.put(EncodeHintType.CHARACTER_SET,"utf-8");
hints.put(EncodeHintType.ERROR_CORRECTION,ErrorCorrectionLevel.M);//纠错等级
hints.put(EncodeHintType.MARGIN,2);

//生成二维码(内容,格式,)
try{
BitMatrix bitMatrix = new MultiFormatWriter().encode(content,BarcodeFormat.QR_CODE,width,height,hints);
Path file = new file("D:/code/img.png").toPath();
MatrixToImageWriter.writeToPath(bitMatrix,format,file);
}catch(Exception e){
e.printStackTrace();
}
}
}

//解析读取二维码
public class ReadQRCode{

public static void main(String[] args){

try{
MultiFormatReader formatReader = new MultiFormatReader();

File file = nw File("D:/code/img.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(image,hints);

system.out.println("解析结果:"+result.toString());//www.baidu.com
system.out.println("二维码格式类型:"+result.getBarcodeFormat());//QR_CODE
system.out.println("二维码文本内容:"+result.getText());//www.baidu.com

}catch(Exception e){
e.printStackTrace();
}
}
}

//===========================================================

QR_Code

生成:http://www.swetake.com/qrcode/index-e.html

读取:https://osdn.jp/projects/qrcode

分别下载后,把文件夹lib中的两个jar文件拷到项目中,buildpath

创建类生成二维码,可以参考example

//QRCode生成二维码
public class CreateQRCode{

public static void main(String[] args){

Qrcode x=new Qrcode();//实例化
x.setQrcodeErrorCorrect('M');//纠错等级L.M.H.Q
x.setQrcodeEncodeMode('B');//N代表数字 A代表a-z B代表其他字符(中文)
x.setQrcodeVersion(7);//版本1-40
String qrData = "www.baidu.com";
int width = 67+12*(7-1);//7是版本号
int height = 67+12*(7-1);//这是一个公式,自己随意定义的话会太大,比如300,一张图会有空白页,二维码就在左上角了

//java gui
BufferedImage bufferedImage = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);

Graphics2D gs = bufferedImage.createGraphics();
gs.setBackground(Color.WHITE);
gs.setColor(Color.BLACK);
qs.clearRect(0,0,width,height,);

//偏移量
int pixoff = 2;

//往画板中填充内容
byte[] d =qrData.getText().getBytes("gb2313=2");//gb2312是中文,默认是无参数
if (d.length>0 && d.length <120){//转成字节数,然后填充
boolean[][] s = x.calQrcode(d);//计算QRCode

for (int i=0;i<s.length;i++){
for (int j=0;j<s.length;j++){
if (s[j][i]) {
gs.fillRect(j*3+pixoff, i*3+pixoff, 3, 3);
}
}
}
}

gs.dispose();
bufferedImage.flush();
ImageIO.write(bufferedImage,"png",new File("D:/code/qrcode.png"));

}

}

//解析读取二维码
public class ReadQRCode{

public static void main(String[] args){

try{
MultiFormatReader formatReader = new MultiFormatReader();

File file = nw File("D:/code/qrcode.png");//读取文件

BufferedImage bufferedImage = ImageIO.read(file);//识别成图片

QRCodeDecoder codeDecoder = new QRCodeDecoder();

QRcodeDecoder codeDecoder = new QRcodeDecoder();

String result = new String(codeDecoder.decode(new MyQRCodeImage(bufferedImage)),"gb2312");

system.out.println("解析结果:"+result);//www.baidu.com

}catch(Exception e){
e.printStackTrace();
}
}
}

//实现类
public class MyQRCodeImage implements QRCodeImage{

BufferedImage bufferedImage;

public MyQRCodeImage(BufferedImage bufferedImage){
this.bufferedImage = bufferedImage;
}

@Override
public int getHeight(){
return bufferedImage.getHeight();
}

@Override
public int getPixel(int arg0, int arg1){
return bufferedImage.getRGB(arg0,arg1);
}

@Override
public int getWidth(){
return bufferedImage.getWidth();
}
}

//====================

3.jquery-qrcode

https://github.com/jeromeetienne/jquery-qrcode

release去下载

建议使用jquery qrcode.min.js(压缩过的文件)

引入js <div>

1.创建Web工程

2.webContent下创建js文件夹,放入jquery min.js  和 jquery qrcode.min.js 注意顺序

3.创建qrcode.jsp

//========================

LOGO的话,需要photoshop去处理

我们扫描的只是链接“www.baidu.com”, 而不是首页

www.baidu.com ---->改为 http://www.baidu.com

如何实现二维码扫描安装手机软件?

苹果:

https://itunes.apple.com/cn/app/mu-ke-wng/id722179140?mt=8

安卓:

http://www.immoc.com/mobile/appdown

http://www/imooc.com/mobile/mukewang.apk --这种也可以,只是微信不支持

二维码扫描名片

Vcard是标准通信簿基本格式

https://zh.wikipedia.org/wiki/VCard(中文打不开的话,用英文的en.wiki...)

Vcard2.1版本

利用Java生成二维码相关推荐

  1. java 生成二维码 QRCode、zxing 两种方式

    版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢. https://blog.csdn.net/testcs_dn/article/details/ ...

  2. 二维码相关---java生成二维码名片,并且自动保存到手机通讯录中...

    二维码相关---java生成二维码名片,并且自动保存到手机通讯录中... 技术qq交流群:JavaDream:251572072 1.首先介绍一个api.   Zxing是Google提供的关于条码 ...

  3. java生成二维码到文件,java生成二维码转成BASE64

    java生成二维码到文件,java生成二维码转成BASE64 如题,利用java和第三方库,把指定的字符串生成二维码,并且把二维码保存成图片,转换成BASE64格式. 需要的jar文件: packag ...

  4. Spring Boot电商项目57:订单模块六:【前台:生成支付二维码】接口;(支付url的拼凑;利用zxing生成二维码;二维码图片的存储;真实地址与可访问地址的转换;)

    说明: (1)本篇博客主要内容是:开发[前台:生成支付二维码]接口: (2)本篇博客需要注意的点有: ● 支付url的拼凑: ● 利用zxing生成二维码: ● 二维码图片的存储:真实地址与可访问地址 ...

  5. Java 生成二维码。

    Java 生成二维码. 文章目录 Java 生成二维码. 二维码. 发展. 一维码. 二维码. 优缺点. QR Code. 生成方法. 第三方 jar.eg. zxing 和 qrcodejar. J ...

  6. java 生成二维码,解析二维码

    今天遇到需求,使用Java生成二维码图片,网搜之后,大神们早就做过,个人总结一下. 目标:借助Google提供的ZXing Core工具包,使用Java语言实现二维码的生成和解析. 步骤如下: 1.m ...

  7. java生成二维码-微信支付、支付宝支付链接转二维码解决方案

    1.后台返回链接利用js生成二维码供客户使用 需要js文件:qrcode.min.js 下载地址:http://static.runoob.com/assets/qrcode/qrcode.min.j ...

  8. 二维码相关---java生成二维码名片,而且自己主动保存到手机通讯录中...

    版权声明:本文为博主原创文章,未经博主credreamer 同意不得转载 违者追究法律责任. https://blog.csdn.net/lidew521/article/details/244418 ...

  9. 使用Java生成二维码

    二维码应该称为二维条码,扫描之后可以获得更多数据 QR码全称为快速响应矩阵码,1994年日本一个公司发明 黑色表示1,白色表示0 3个角落比较像"回"字,叫定位点 容错机制,当7% ...

最新文章

  1. GTDB:基因组分类数据库,物种注释和进化树构建工具GTDB-tk
  2. JustOj 1486: Hello, world!
  3. 把hive数据导出至mysql
  4. Acwing202. 最幸运的数字
  5. 会计电算化的过程 实质上是用计算机,会计电算化的过程,实质上是用计算机()的过程。A.单一地替代手工会计操作B.单一地替代对会计进行分...
  6. 提升服务器性能的建议
  7. Vue+Mock.js模拟登录和表格的增删改查
  8. 安装scrapy框架报错是常见问题
  9. _Linux 系统挂载数据盘
  10. 邮件服务器两种协议,邮件服务器协议
  11. 美团(Leaf)分布式ID算法
  12. 前端框架——bootstrap/knockoutjs/angularjs
  13. Android_组件_BroadcastReceiver基础
  14. Git的commit your changes or stash them before you can merge
  15. 中国生态城市规划行业“十四五”规划与前景规模预测报告2022-2028年版
  16. 新推多多旅行搅局在线旅游市场,拼多多有多少胜算?
  17. 记录前端通过XShell和xftp发布版本
  18. 旅游黄山需要注意的几个问题
  19. 深入RxJava2 源码解析(二)
  20. POI实现EXCEL下拉列表

热门文章

  1. WIN10鼠标指针在等待状态下出现重影、假影、虚影,、显示错误的问题。
  2. SpringMVC学习笔记(2)——B站动力节点
  3. finalcut剪切快捷键_苹果finalcutpro剪辑软件fcpx部分操作快捷键
  4. @NotNull, @NotEmpty和@NotBlank之间的区别是什么?
  5. 微商引流精准客源,全自动黑科技软件!
  6. 无线网络呗主服务器限制网速怎么办,怎么设置限制别人wifi网速,wifi限制网速设置多少...
  7. 【BFS】马的覆盖点
  8. 共建安全大生态——2016第十七届信息安全大会采风
  9. 表格批量导入金蝶专业版销售订单
  10. 06 OpenCV 阈值处理、自适应处理与ostu方法