二维码的概念:
是某种特定的几何图形按一定规律在平面分布的黑白相间的图形记录数据符号信息的图形。
二维码的发展历史:
从一维码原生过来,一维码是有一组粗细不同,黑白相间的的条,及相应的字符组成的标记,即传统码。
二维码是某种特定的几何图形按一定规律在平面分布的黑白相间的图形记录数据符号信息的图形
二维码存储数据更广泛。
二维码的优缺点:
高密度编码,信息容量大;编码范围广;容错能力强;译码可靠性高;可引入加密措施;成本低,易制作,持久耐用。
二维码成为手机病毒,钓鱼网站传播的新渠道。使信息泄露。优点大于缺点。
流行的三大国际标准:
PDF417:不支持中文
DN:专利为公开。需付费使用。
QR code : 专利公开,支持中文。具有识别快,占用空间小,由日本公司开发。
QR code纠错能力:
L:可纠错%7数据码字
M:可纠错%15数据码字
Q:可纠错%25数据码字
H:可纠错%30数据码字
通过zxing和QRCode第三方jar报包开发和jquery
使用zxing开发代码:
int width = 300;// 宽
int height = 300;// 高
String format = "png";// 图片格式
String content = "https://www.imooc.com";// 内容
// 定义二维码的参数
HashMap map = new HashMap();
map.put(EncodeHintType.CHARACTER_SET, "utf-8");// 字符集,编码格式
map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);// 纠错等级
// 写入定义的参数
BitMatrix bit = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, map);
// 生成二维码本地路径
Path file = new File("E:/code/img.png").toPath();
MatrixToImageWriter.writeToPath(bit, format, file);
使用zxing解析二维码数据:
// 读取
MultiFormatReader mt = new MultiFormatReader();
// 本地路径
File file = new File("E:/code/img.png");
// 读取图片
BufferedImage image = ImageIO.read(file);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));
HashMap map = new HashMap();
map.put(EncodeHintType.CHARACTER_SET, "utf-8");// 字符集,编码格式
Result result = mt.decode(bitmap, map);
System.out.println(result);