二维码的学习

来源:互联网 发布:js清除所有cookie 编辑:程序博客网 时间:2024/05/21 22:56

二维码的生成.

二维码的解析

jar包和一下代码http://download.csdn.net/detail/wangqiankun2010/8149965

package com.taxue.util;import java.awt.Color;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.io.UnsupportedEncodingException;import javax.imageio.ImageIO;import jp.sourceforge.qrcode.QRCodeDecoder;import jp.sourceforge.qrcode.data.QRCodeImage;import com.swetake.util.Qrcode;/** * 二维码生成器 *  * @author administrator */public class QRCodeEncoderHandler {public static void main(String[] args) { newQRCode();jiexiQRCode();}// 生成二维码public static void newQRCode() {String content = "王乾坤的二维码测试" + "\n Tel : 1873897**72 "+ "\n EMail : 651518854@qq.com ";String imgPath = "F:\\ewm.png";QRCodeEncoderHandler qRCodeEncoderHandler = new QRCodeEncoderHandler();qRCodeEncoderHandler.encodeQRCode(content, imgPath);System.out.println("encode QRCode SUCCESS");}// 解析二维码public static void jiexiQRCode() {QRCodeEncoderHandler qRCodeEncoderHandler = new QRCodeEncoderHandler();String imagePath = "F:/ewm.png";String decoderContent = qRCodeEncoderHandler.decoderQRCode(imagePath);System.out.println("解析结果如下:" + decoderContent);}/** * 生成二维码图片 *  * @param content   内容 * @param imgPath   路径 */public void encodeQRCode(String content, String imgPath) {Qrcode qrcodeHandler = new Qrcode();qrcodeHandler.setQrcodeEncodeMode('B');// 一种编码方式qrcodeHandler.setQrcodeErrorCorrect('M'); // M代表信息纠错级别为15% " M是二级qrcodeHandler.setQrcodeVersion(7);// 版本号
// 版本7为45*45的矩阵;版本每增1,二维码的两个边长都增4,最高版本为是40是177*177的矩阵System.out.println(content);try {byte[] contenBytes = content.getBytes("utf-8");BufferedImage bufferedImage = new BufferedImage(140, 140,BufferedImage.TYPE_INT_RGB);Graphics2D graphics2D = bufferedImage.createGraphics();graphics2D.setBackground(Color.WHITE);<span style="font-family: Arial, Helvetica, sans-serif;">// 设定颜色</span>graphics2D.clearRect(0, 0, 140, 140);graphics2D.setColor(Color.BLACK);// 设定颜色int pixoff = 2; <span style="white-space:pre"></span>// 设置偏移量if (contenBytes.length > 0 && contenBytes.length < 120) {boolean[][] codeOut = qrcodeHandler.calQrcode(contenBytes);for (int i = 0; i < codeOut.length; i++) {for (int j = 0; j < codeOut.length; j++) {if (codeOut[j][i]) {    graphics2D.fillRect(j * 3 + pixoff, i * 3 + pixoff,3, 3);}}}} else {System.out.println("QRCode content bytes length = "+ contenBytes.length + "不在 [ 0,120 ]. ");}graphics2D.dispose();bufferedImage.flush();File imageFile = new File(imgPath);ImageIO.write(bufferedImage, "png", imageFile);// 生成二维码QRCode图片} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}/** * 解析二维码 *  * @param imagePath  图片路径 * @return */public String decoderQRCode(String imagePath) {File imageFile = new File(imagePath);BufferedImage bufferedImage = null;String decodeData = null;try {bufferedImage = ImageIO.read(imageFile);QRCodeDecoder qRCodeDecoder = new QRCodeDecoder();decodeData = new String(qRCodeDecoder.decode(new J2SEImage(bufferedImage)));} catch (IOException e) {System.out.println(e.getMessage() + "io问题");e.printStackTrace();}return decodeData;}}class J2SEImage implements QRCodeImage {BufferedImage bufferedImage;public J2SEImage(BufferedImage bufferedImage) {this.bufferedImage = bufferedImage;}public int getHeight() {return bufferedImage.getHeight();}public int getPixel(int x, int y) {return bufferedImage.getRGB(x, y);}public int getWidth() {return bufferedImage.getWidth();}}


0 0
原创粉丝点击