`
aitaozhang
  • 浏览: 6041 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Java二维码生成与解析

    博客分类:
  • Java
阅读更多
Java二维码生成与解析

=============生成开始================
package com.qiaitao.utils;

import java.awt.Color;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.io.File;

import javax.imageio.ImageIO;

import com.swetake.util.Qrcode;

/**

 * 二维码生成器

 * @blog http://aitaozhang.iteye.com

 * @author aitaozhang

 */

public class Enqrcode {

	/**

	 * 生成二维码(QRCode)图片

	 * @param content

	 * @param imgPath

	 */

	public void encoderQRCode(String content, String imgPath) {

		try {

			Qrcode qrcodeHandler = new Qrcode();

			qrcodeHandler.setQrcodeErrorCorrect('M');

			qrcodeHandler.setQrcodeEncodeMode('B');

			qrcodeHandler.setQrcodeVersion(8);

			System.out.println(content);

			byte[] contentBytes = content.getBytes("UTF-8");

			BufferedImage bufImg = new BufferedImage(150, 150,

			BufferedImage.TYPE_INT_RGB);

			Graphics2D gs = bufImg.createGraphics();

			gs.setBackground(Color.WHITE);

			gs.clearRect(0, 0, 150, 150);

			// 设定图像颜色> BLACK 

			gs.setColor(Color.BLACK);

			// 设置偏移量 不设置可能导致解析出错 

			int pixoff = 2;

			// 输出内容> 二维码 

			if (contentBytes.length > 0 && contentBytes.length < 150) {

				boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);

				for (int i = 0; i < codeOut.length; i++) {

					for (int j = 0; j < codeOut.length; j++) {

						if (codeOut[j][i]) {

							gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3);

						}

					}

				}

			} else {

				System.err.println("QRCode content bytes length = "

				+ contentBytes.length + " not in [ 0,150 ]. ");

			}

			gs.dispose();

			bufImg.flush();

			File imgFile = new File(imgPath);

			// 生成二维码QRCode图片 

			ImageIO.write(bufImg, "png", imgFile);

		} catch (Exception e) {

			e.printStackTrace();

		}

	}

	/**

	 * @param args the command line arguments

	 */

	public static void main(String[] args) {

		String imgPath = "D:/images/Enqrcode.png";

		String content = "Hello Bigbig,Smallsmall,Welcome To 齐爱淘!"

		+ "\nMyblog [ http://aitaozhang.iteye.com ]"

		+ "\nEmail [ aitaozhang@163.com ]" + "\nNetWork [ http://www.qiaitao.com ]";

		Enqrcode handler = new Enqrcode();

		handler.encoderQRCode(content, imgPath);

		System.out.println("encoder QRcode success");

	}

}

=============生成结束================
=============解析开始================
package com.qiaitao.utils;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

import jp.sourceforge.qrcode.QRCodeDecoder;

import jp.sourceforge.qrcode.data.QRCodeImage;

import jp.sourceforge.qrcode.exception.DecodingFailedException;

/**

 * @blog http://aitaozhang.iteye.com

 * @author aitaozhang

 */

public class Deqrcode {

	/**

	 * 解码二维码

	 * @param imgPath

	 * @return String

	 */

	public String decoderQRCode(String imgPath) {

		// QRCode 二维码图片的文件 

		File imageFile = new File(imgPath);

		BufferedImage bufImg = null;

		String decodedData = null;

		try {

			bufImg = ImageIO.read(imageFile);

			QRCodeDecoder decoder = new QRCodeDecoder();

			decodedData = new String(decoder.decode(new J2SEImage(bufImg)),"UTF-8");

			/* try { 

			 System.out.println(new String(decodedData.getBytes("gb2312"), 

			 "gb2312")); 

			 } catch (Exception e) { 


			 } */

		} catch (IOException e) {

			System.out.println("Error: " + e.getMessage());

			e.printStackTrace();

		} catch (DecodingFailedException dfe) {

			System.out.println("Error: " + dfe.getMessage());

			dfe.printStackTrace();

		}

		return decodedData;

	}

	/**

	 * @param args the command line arguments

	 */

	public static void main(String[] args) {

		Deqrcode handler = new Deqrcode();

		String imgPath = "d:/images/Enqrcode.png";

		String decoderContent = handler.decoderQRCode(imgPath);

		System.out.println("解析结果如下:");

		System.out.println(decoderContent);

		System.out.println("========decoder success!!!");

	}

	class J2SEImage implements QRCodeImage {

		BufferedImage bufImg;

		public J2SEImage(BufferedImage bufImg) {

			this.bufImg = bufImg;

		}

		public int getWidth() {

			return bufImg.getWidth();

		}

		public int getHeight() {

			return bufImg.getHeight();

		}

		public int getPixel(int x, int y) {

			return bufImg.getRGB(x, y);

		}

	}

}

=============解析结束================
所需jar包请下载附件
分享到:
评论
1 楼 calosteward 2015-01-14  
赞一个。 
谢谢分享了~非常有用。
——————————————————————
free java qrcode image creator
java barcode creator

相关推荐

    java二维码生成与解析

    Java二维码生成与解析是Java开发中的一个重要功能,它涉及到数据编码、图像处理和解码算法等多个技术领域。在这个话题中,我们将深入探讨如何在Java环境中创建和读取二维码(Quick Response Code),以及相关的编程...

    java二维码生成与解析代码实现.docx

    以下是一些关于Java二维码生成与解析的关键知识点: 1. **依赖库**: - `QRCode.jar`:这是用于生成和解码二维码的库,它可能包含了`jp.sourceforge.qrcode`和`com.swetake.util.Qrcode`这两个包,这两个包提供了...

    Java 二维码生成与解析包

    Java 二维码生成与解析包,在原有的基础上打包的,易用简单使用方法参照

    java二维码生成与解析含相应jar,并解决jsp引用二维码

    Java二维码生成与解析是开发Web应用时常用的功能,特别是在移动互联网时代,二维码作为一种便捷的数据交换方式,被广泛应用在登录、支付、分享等多个场景。本文将详细介绍如何在Java环境中生成和解析二维码,以及...

    java二维码生成与解析代码实现(内含核心包QRCode.jar)

    java二维码生成与解析源码内含核心包文件QRCode.jar。 二维码的特点: 1. 高密度编码,信息容量大 可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,比普通条码信息容量约高几十倍。 2. 编码...

    Java 二维码生成、解析

    Java 二维码生成与解析是Java开发中常见的功能需求,尤其在移动互联网时代,二维码被广泛应用于数据交换、链接跳转、支付凭证等场景。本文将详细介绍如何使用Google的ZXing库来实现Java环境下的二维码生成与解析。 ...

    基于java的二维码生成与解析demo

    这是一个基于java开发的二维码生成与解析 可以根据程序配置的参数设置生成二维码的图片大小 以及密度 这是一个基于java开发的二维码生成与解析 可以根据程序配置的参数设置生成二维码的图片大小 以及密度 这是一个...

    java二维码生成与解析实例

    Java语言提供了多种库来支持二维码的生成与解析,其中Zxing(Zebra Crossing)是一个开源项目,专为多种一维条码和二维条码提供读取、生成功能。本文将深入探讨如何在Java中利用Zxing库进行二维码的生成与解析。 ...

    Java二维码生成/解析工具

    QRCodeUtils使用文档详见博客https://blog.csdn.net/qq_24091555/article/details/81263472

    java二维码生成与解析代码实现代码

    Java二维码生成通常依赖于第三方库,如ZXing(Zebra Crossing)或Java QRCode Library。ZXing是一个开源项目,提供了多种条形码和二维码的读写能力。在Java中使用ZXing,我们需要添加对应的依赖,如果你使用的是...

    java的二维码生成与解析

    Java二维码生成与解析是计算机编程领域中的一个常见技术,尤其在移动互联网和物联网应用中扮演着重要角色。本文将深入探讨Java如何实现二维码的生成与解析,并分享一个源自日文网站的相关程序,供读者学习和实践。 ...

    java二维码生成与解析代码实现所需要的QRCode.jar

    该jar包已经集成QRCode的编码包和解码包,下载了可以直接使用! 该jar包已经集成QRCode的编码包和解码包,下载了可以直接使用!

    Java QRCode二维码生成与识别 开源

    总的来说,这个Java QRCode二维码生成与识别开源项目提供了一整套解决方案,从生成包含汉字的二维码到读取和解析二维码图像。开发者可以利用这些工具进行各种应用开发,如移动支付、信息分享、门票验证等。通过深入...

    Java二维码生成和解析实现

    以上就是使用Java和ZXing库实现二维码生成与解析的基本步骤。在实际应用中,可能需要根据具体需求进行错误处理、格式调整、定制样式等。源码文件中的内容可能包括了这些更具体的实现细节,可以深入研究以获取更全面...

    java二维码生成解析

    Java二维码生成与解析是现代移动应用中常见的技术,它能够将大量信息编码成二维图形,通过扫描设备快速读取和解码。QRcode是目前最广泛使用的二维码标准,由日本Denso Wave公司开发。在Java中,我们可以利用开源库如...

    java二维码生成和添加中间图片

    Java二维码生成技术是一种在软件开发中常用的功能,它允许我们将数据编码成二维图像,以便于快速扫描和读取。Qrcode(二维码)是日本Denso Wave公司发明的一种矩阵式条形码,相比于传统的条形码,它能存储更多的数据...

    Java实现的生成二维码和解析二维码URL操作示例

    Java 实现生成二维码和解析二维码 URL 操作示例 Java 是一种广泛使用的编程语言,具有强大的功能和灵活性。在实际应用中,生成二维码和解析二维码 URL 是非常常见的操作。本文将详细介绍 Java 实现生成二维码和解析...

    java二维码生成及解析(内含QRCode所需jar包)

    二维码生成及解析内涵两个java类原码与QRCode所需的jar包。 《主要是生成二维码图片》 《主要是生成二维码图片》 《主要是生成二维码图片》 《主要是生成二维码图片》 《主要是生成二维码图片》 《主要是生成二维码...

    java web 二维码生成与解析实例

    总结来说,这个Java Web二维码生成与解析实例涵盖了Java编程、Web开发、二维码编码解码以及HTTP服务处理等多个技术领域。通过实践这个实例,开发者不仅可以掌握基础的二维码操作,还能深入理解Java Web应用的开发...

    关于Java的二维码的生成与解析

    `TestRead.java` 可能包含了使用特定库读取二维码的代码,而 `TestZXing.java` 可能是基于开源项目ZXing(Zebra Crossing)进行二维码生成的代码实现。 ZXing,或称“条形码扫描器”,是一个全面的、开源的、跨平台...

Global site tag (gtag.js) - Google Analytics