项目ITP(一) 二维码

简介:

正文 

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

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

  自然和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);  
    }
}

 

#和生成的相反

   

总结

  二维码生成

  二维码解码


相关文章
|
1月前
|
存储 自然语言处理 小程序
如何制作产品介绍二维码(一):编辑二维码内容
本篇主要以官方模板「产品详情介绍」为例,教大家如何从0开始制作单个产品介绍二维码。
|
8月前
|
小程序
微信小程序 - 二维码数据解析,如何扫码进入开发版测试二维码数据
微信小程序 - 二维码数据解析,如何扫码进入开发版测试二维码数据
292 0
|
8月前
|
小程序
微信小程序显示二维码
微信小程序显示二维码
118 0
|
27天前
|
移动开发 自然语言处理 小程序
如何制作产品介绍二维码(二):二维码设置、美化及管理
这篇教程介绍了如何使用官方模板“产品详情介绍”创建产品介绍二维码,内容包括编辑内容、二维码设置、样式美化和后台管理四个步骤。在二维码设置中,涉及有效期、查看权限、地区限制和打开方式等选项。样式美化则涵盖更换标签样式和内容修改。后台管理允许修改二维码内容和查看扫描统计数据。
|
2月前
|
小程序 JavaScript
微信小程序显示二维码?
微信小程序显示二维码?
|
4月前
|
小程序
微信小程序中长按识别二维码
微信小程序中长按识别二维码
82 0
|
4月前
|
小程序 PHP 开发者
微信公众号开发(八)生成带参数二维码,以及将二维码下载至本地
微信的二维码真是个神奇的东西。在我们开发中,应用也是很多~ 用户扫描带场景值(参数)二维码时,可能推送以下两种事件:
63 1
|
9月前
uniapp实现微信扫二维码进行核销
uniapp实现微信扫二维码进行核销
197 0
|
9月前
|
前端开发 小程序 API
微信小程序——二维码推广海报
微信小程序——二维码推广海报
114 0
二维码
二维码
78 0