前言

  系列文章:[传送门]

  上几周碌碌无为,不行啊不行啊。博客园,不知道你几时改版。老家了,我不会忘记你呢。呵呵,我也会在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. node 项目中 koa2 环境搭建 以及项目发布

    环境搭建: 1.Koa 必须使用 7.6 以上的版本.如果你的版本低于这个要求,就要先升级 Node. 查看node版本方法:node -v 2.使用koa-generator生成器生成项目 安装ko ...

  2. strchr和strstr 函数

    函数原型:extern char *strchr(char *str,char character) 参数说明:str为一个字符串的指针,character为一个待查找字符.        所在库名: ...

  3. 从React组件划分的纠结到总结

    在实际开发项目中,我将所有的React组件划分为容器组件和展示组件,展示组件其实就是一个纯函数组件,没有任何副作用,基本都是PureComponent.但是突然,出现了这么一个问题: 我有一个浮层组件 ...

  4. CentOS下安装Git

    在终端输入命令:yum install git,此时会进行提示安装,输入y, 在这种安装方式下,速度很快(windows系统下下载客户端速度超慢),当出现安装完毕时,就可以了. 安装完毕后输入git ...

  5. 添加sqljdbc的maven依赖JAVA环境配置

    sqljdbc是微软sql server的jdbc驱动 使用sqljdbc需要从微软的官方网站下载jar包: http://www.microsoft.com/en-us/download/detai ...

  6. 1003 Emergency Dijkstra

    这题做的心很累,我用的还是 1018的思路做的,但是 使用dfs 求最大人数对于某些有问题(现在也不知道错哪了), 看了别人的代码后才发现,其实完全不用这么麻烦,只需设置一个点的权重,一遍DJ(自创简 ...

  7. HDU 6377 度度熊看球赛 (计数DP)

    度度熊看球赛 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  8. 一个简单的TensorFlow可视化MNIST数据集识别程序

    下面是TensorFlow可视化MNIST数据集识别程序,可视化内容是,TensorFlow计算图,表(loss, 直方图, 标准差(stddev)) # -*- coding: utf-8 -*- ...

  9. SpringCloud服务注册与发现

    1.介绍对于微服务的治理而言,其核心就是服务的注册和发现.在SpringCloud 中提供了多种服务注册与发现组件:Eureka,Consul,Zookeeper.官方推荐使用Eureka. 说明:E ...

  10. android-基础编程-Notification

    Notification 的创建主要涉及到 Notification.Builder . Notification . NotificationManager . Notification.Buile ...