前言

  系列文章:[传送门]

  上几周碌碌无为,不行啊不行啊。博客园,不知道你几时改版。老家了,我不会忘记你呢。呵呵,我也会在os,csdn更新的。每天一搏,不管有用没用。

正文

  正文先有项目起步,项目中的需求很明确。

    利用二维码扫描,然后实现签到功能。

  自然和app挂钩。 没事,一步一步来。

二维码

  二维码(QR(Quick Response)code),又称二维条码,它是用特定的几何图形按一定规律在平面(二维方向)上分布的黑白相间的图形,是所有信息数据的一把钥匙

  

利用工具-zxing

  ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码。该项目可实现的条形码编码和解码

  大家可以去了解

  https://github.com/zxing/zxing/wiki/Getting-Started-Developing

二维码(QRCode)的生成

  /**
* 生成二维码图片
* @param content 内容
* @param width 宽度
* @param height 高度
* @param imgPath 存储图片路径
*/
package sedion.jeffli.wmuitp.util.zxing;

import java.io.File;
import java.util.Hashtable; import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; /**
* @author Jeff Lee
*/
public class ZxingEncoderHelper
{ /**
* 生成二维码图片
* @param content 内容
* @param width 宽度
* @param height 高度
* @param imgPath 存储图片路径
*/
public void encode(String content, int width, int height, String imgPath)
{ Hashtable<EncodeHintType, Object> hts = new Hashtable<EncodeHintType, Object>();
hts.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L); // 纠错等级
hts.put(EncodeHintType.CHARACTER_SET, "utf-8"); // 指定编码格式为UTF-8 try
{ BitMatrix bitMatrix = new MultiFormatWriter().encode(content, //编码内容,编码类型(这里指定为二维码),
BarcodeFormat.QR_CODE, width, height, hts); //图片宽度,图片高度,设置参数 MatrixToImageWriter
.writeToFile(bitMatrix, "png", new File(imgPath)); //生成的二维码图片 }
catch (Exception e)
{
e.printStackTrace();
}
} public static void main(String[] args)
{
String imgPath = "d:/33.png";
String contents = "你好!我的博客:http://www.cnblogs.com/Alandre/";
int width = 300, height = 300;
ZxingEncoderHelper handler = new ZxingEncoderHelper();
handler.encode(contents, width, height, imgPath);
}
}

#BitMatrix  设置参数顺序分别为:编码内容,编码类型,生成图片宽度,生成图片高度,设置参数

#MatrixToImageWriter 生成所需要的文件

你会找到这个图片

  

 

二维码(QRCode)的解码

  

  /**
* 解码
* @param imgPath 二维码图片路径
* @return
*/
package sedion.jeffli.wmuitp.util.zxing;

import java.awt.image.BufferedImage;
import java.io.File;
import java.util.Hashtable; import javax.imageio.ImageIO; import com.google.zxing.BinaryBitmap;
import com.google.zxing.DecodeHintType;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.HybridBinarizer; /**
* @author Jeff Lee
*/
public class ZxingDecoderHandler
{ /**
* 解码
* @param imgPath 二维码图片路径
* @return
*/
public String decode(String imgPath)
{ BufferedImage image = null;
Result result = null; try
{
image = ImageIO.read(new File(imgPath));
if (image == null)
{
System.out.println("文件不存在!"); //应该抛个异常的
} LuminanceSource source = new BufferedImageLuminanceSource(image);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>();
hints.put(DecodeHintType.CHARACTER_SET, "utf-8"); result = new MultiFormatReader().decode(bitmap, hints);
return result.getText();
}
catch (Exception e)
{
e.printStackTrace();
} return null;
} public static void main(String[] args)
{
String imgPath = "d:/33.png"; ZxingDecoderHandler handler = new ZxingDecoderHandler();
String content = handler.decode(imgPath); System.out.println("内容如下:");
System.out.println(content);
}
}

#和生成的相反

   

总结

  二维码生成

  二维码解码

感谢及资源共享

    

    路上走来一步一个脚印,希望大家和我一起。

    感谢读者!很喜欢你们给我的支持。如果支持,点个赞。

    知识来源: https://github.com/zxing/zxing/wiki/Getting-Started-Developing

项目ITP(一) 二维码的更多相关文章

  1. C# 动态创建SQL数据库(二) 在.net core web项目中生成二维码 后台Post/Get 请求接口 方式 WebForm 页面ajax 请求后台页面 方法 实现输入框小数多 自动进位展示,编辑时实际值不变 快速掌握Gif动态图实现代码 C#处理和对接HTTP接口请求

    C# 动态创建SQL数据库(二) 使用Entity Framework  创建数据库与表 前面文章有说到使用SQL语句动态创建数据库与数据表,这次直接使用Entriy Framwork 的ORM对象关 ...

  2. react native 项目使用 expo 二维码扫描失败

    今天学习react native,需使用expo在移动端进行调试. npm start 运行项目后,使用expo扫描二维码,始终没有反应.于是决定采用这个方法: 连上手机打开usb调试后,按下‘a’, ...

  3. vue项目条形码和二维码生成工具试用

    项目开发需要,优惠券分不同类型,简单的使用id生成条形码供店铺使用,麻烦点的需要多个字段的就需要使用二维码来展示了,对应的效果如下 条形码(一维码)使用工具code128 需引入code128.js ...

  4. 在.net core web项目中生成二维码

    1.添加QRCoder包引用 2. public IActionResult MakeQrCode()        { string url="https://www.baidu.com& ...

  5. Android二维码功能实现,在程序内嵌入ZXing项目

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9526247 最近二维码真是越来越火了,随便电视上.网络上.商场里,到处都是二维码. ...

  6. 免费生成二维码接口,可直接嵌入到web项目中,附带嵌入方法,任意颜色二维码,任意大小二维码!

    在线体验连接:http://www.zhaimaojun.top/qrcode/ 你是否在项目中寻找方便而且免费的可以直接嵌入到项目中的二维码生成工具呢?你找到了这里,说明你已经找到了!不要犹豫直接拿 ...

  7. C#使用zxing,zbar,thoughtworkQRcode解析二维码,附源代码

    最近做项目需要解析二维码图片,找了一大圈,发现没有人去整理下开源的几个库案例,花了点时间 做了zxing,zbar和thoughtworkqrcode解析二维码案例,希望大家有帮助. zxing是谷歌 ...

  8. Android仿微信二维码扫描

    转载:http://blog.csdn.net/xiaanming/article/details/10163203 了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一 ...

  9. ASP.NET 生成二维码(采用ThoughtWorks.QRCode和QrCode.Net两种方式)

    最近做项目遇到生成二维码的问题,发现网上用的最多的是ThoughtWorks.QRCode和QrCode.Net两种方式.访问官网看着例子写了两个Demo,使用过程中发现两个都挺好用的,Thought ...

随机推荐

  1. Scrum冲刺阶段5

    成员今日完成的任务 人员 任务 何承华 学习后端设计 陈宇 后端设计 丁培辉 学习后端设计 温志铭 日程添加界面设计(后半段设计) 杨宇潇 日程添加界面设计(后半段设计) 张主强 服务器构建学习 成员 ...

  2. INTERVAL YEAR TO MONTH数据类型

    INTERVAL YEAR TO MONTH数据类型 Oracle语法: INTERVAL 'integer [- integer]' {YEAR | MONTH} [(precision)][TO ...

  3. Fiddler抓包工具安装与使用

    1.Fiddler简介2.Fiddler安装步骤3.Fiddler目录结构4.Fiddler证书配置5.Fiddler录制配置6.Fiddler工作原理7.Fiddler界面详解 1.Fiddler简 ...

  4. cropper.js 裁剪图片

    https://blog.csdn.net/weixin_38023551/article/details/78792400

  5. deepCopy深拷贝

    function deepCopy(p,c){ var c = c || {}; for ( var i in p ){ //确保属于自己的属性 if ( p.hasOwnProperty( i ) ...

  6. ADO.NET学习笔记(1)

    ADO.Net是.Net框架中为数据库的访问而封装的一个库.通过这个库我们可以简单便捷的访问数据库,并对数据库进行一些增删改查的操作,目前ADO.Net支持四种主流的数据库,分别是SQL.OLE DB ...

  7. POJ 1067 威佐夫博弈

    点这里去看题 套公式,判断是否为奇异组合 #include<stdio.h> #include<algorithm> #include<math.h> #inclu ...

  8. vue watch高级用法

    watch是vue组件最常用,最重要的功能之一,我们都知道它最基本的特性就是监听的data对象里的属性变化了,watch就会自动执行. 那它还有什么骚操作呢?下面我带大家看看,菜鸟一枚,如有错误欢迎指 ...

  9. Linux 查找文件内容、替换

    有的时候我们经常性的需要在 linux 某一个目录下查找那些文件里包含我们需要查找的字符,那么这个时候就可以使用一些命令来查找,比如说 grep 1.grep 查询 1.1. 主要参数 [option ...

  10. RabbitMQ Routing 消息路由

    上篇文章中,我们构建了一个简单的日志系统.接下来,我们将丰富它:能够使用不同的severity来监听不同等级的log.比如我们希望只有error的log才保存到磁盘上. 1. Bindings绑定 上 ...