利用Java生成二维码
转自: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生成二维码相关推荐
- java 生成二维码 QRCode、zxing 两种方式
版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢. https://blog.csdn.net/testcs_dn/article/details/ ...
- 二维码相关---java生成二维码名片,并且自动保存到手机通讯录中...
二维码相关---java生成二维码名片,并且自动保存到手机通讯录中... 技术qq交流群:JavaDream:251572072 1.首先介绍一个api. Zxing是Google提供的关于条码 ...
- java生成二维码到文件,java生成二维码转成BASE64
java生成二维码到文件,java生成二维码转成BASE64 如题,利用java和第三方库,把指定的字符串生成二维码,并且把二维码保存成图片,转换成BASE64格式. 需要的jar文件: packag ...
- Spring Boot电商项目57:订单模块六:【前台:生成支付二维码】接口;(支付url的拼凑;利用zxing生成二维码;二维码图片的存储;真实地址与可访问地址的转换;)
说明: (1)本篇博客主要内容是:开发[前台:生成支付二维码]接口: (2)本篇博客需要注意的点有: ● 支付url的拼凑: ● 利用zxing生成二维码: ● 二维码图片的存储:真实地址与可访问地址 ...
- Java 生成二维码。
Java 生成二维码. 文章目录 Java 生成二维码. 二维码. 发展. 一维码. 二维码. 优缺点. QR Code. 生成方法. 第三方 jar.eg. zxing 和 qrcodejar. J ...
- java 生成二维码,解析二维码
今天遇到需求,使用Java生成二维码图片,网搜之后,大神们早就做过,个人总结一下. 目标:借助Google提供的ZXing Core工具包,使用Java语言实现二维码的生成和解析. 步骤如下: 1.m ...
- java生成二维码-微信支付、支付宝支付链接转二维码解决方案
1.后台返回链接利用js生成二维码供客户使用 需要js文件:qrcode.min.js 下载地址:http://static.runoob.com/assets/qrcode/qrcode.min.j ...
- 二维码相关---java生成二维码名片,而且自己主动保存到手机通讯录中...
版权声明:本文为博主原创文章,未经博主credreamer 同意不得转载 违者追究法律责任. https://blog.csdn.net/lidew521/article/details/244418 ...
- 使用Java生成二维码
二维码应该称为二维条码,扫描之后可以获得更多数据 QR码全称为快速响应矩阵码,1994年日本一个公司发明 黑色表示1,白色表示0 3个角落比较像"回"字,叫定位点 容错机制,当7% ...
最新文章
- GTDB:基因组分类数据库,物种注释和进化树构建工具GTDB-tk
- JustOj 1486: Hello, world!
- 把hive数据导出至mysql
- Acwing202. 最幸运的数字
- 会计电算化的过程 实质上是用计算机,会计电算化的过程,实质上是用计算机()的过程。A.单一地替代手工会计操作B.单一地替代对会计进行分...
- 提升服务器性能的建议
- Vue+Mock.js模拟登录和表格的增删改查
- 安装scrapy框架报错是常见问题
- _Linux 系统挂载数据盘
- 邮件服务器两种协议,邮件服务器协议
- 美团(Leaf)分布式ID算法
- 前端框架——bootstrap/knockoutjs/angularjs
- Android_组件_BroadcastReceiver基础
- Git的commit your changes or stash them before you can merge
- 中国生态城市规划行业“十四五”规划与前景规模预测报告2022-2028年版
- 新推多多旅行搅局在线旅游市场,拼多多有多少胜算?
- 记录前端通过XShell和xftp发布版本
- 旅游黄山需要注意的几个问题
- 深入RxJava2 源码解析(二)
- POI实现EXCEL下拉列表
热门文章
- WIN10鼠标指针在等待状态下出现重影、假影、虚影,、显示错误的问题。
- SpringMVC学习笔记(2)——B站动力节点
- finalcut剪切快捷键_苹果finalcutpro剪辑软件fcpx部分操作快捷键
- @NotNull, @NotEmpty和@NotBlank之间的区别是什么?
- 微商引流精准客源,全自动黑科技软件!
- 无线网络呗主服务器限制网速怎么办,怎么设置限制别人wifi网速,wifi限制网速设置多少...
- 【BFS】马的覆盖点
- 共建安全大生态——2016第十七届信息安全大会采风
- 表格批量导入金蝶专业版销售订单
- 06 OpenCV 阈值处理、自适应处理与ostu方法