吼吼,阳仔的第一篇博客开写啦,以下的内容都是我从imooc上面听课的总结,当然是只针对二维码,作为一个初级程序媛,也是要坚持学习的。
首先,谢谢imooc网上的老师发放的免费视频,让我自己有了一些简单的了解,
接下来,就把我的总结贴出来吧:
第一
二维码的分类:
线性堆叠式二维码:建立在一条维码基础之上,按需要堆积成两条或多条,主要有:pdf417 ultraclode code 49 code16k
矩阵式二维码:QRCode
(最长用到的)
邮政码
为什么QRCode是最长用到的呢?
下面举些常用的二维码格式进行对比:
为什么QRCode是最长用到的呢?
下面举些常用的二维码格式进行对比:
PDF417:不支持中文
DM:专利未公开,需支付专利费用
QR code:专利公开,支持中文。
优点:与其他二维码相比,识读速度快,数据密度大,占用空间小的优势。
接下来介绍一下QRCode:
接下来介绍一下QRCode:
QR Code 是由日本Denso公司于1994年研制的一种矩阵二维码符号码,
全称是:quick response code
纠错能力有4级:L级:约可纠错7%的数据码字
M级:15%
Q级:25%
H级:30%
纠错能力越高,可存储的就越少
生成二维码的三种方式:
01:
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 到现在为止,第一种方法就成功啦!!!
生成二维码的三种方式:
01:
借助第三方jar:zxing(谷歌研发的)和qrcodejar
下载源码
01.01提取zxing-zxing-3.3.0 中core包和javase包中的com文件夹下的内容,
有很多android的文件夹,可以不用管,忽略。因为,咱主要不是那个方向的
有很多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 到现在为止,第一种方法就成功啦!!!