`
xurichusheng
  • 浏览: 344906 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

使用google的zxing制作二维码

阅读更多

一、zxing 的 jar 包及源码下载

   http://code.google.com/p/zxing/downloads/list

 

   本示例选择的是ZXing-2.0.zip

 

二、将下载的 ZXing-2.0.zip 解压,取出 core 及 javase ,将 core 包下的

   com/google/zxing/qrcode/encoder/Encoder.java  的

   static final String DEFAULT_BYTE_MODE_ENCODING = "ISO-8859-1";

   改成

   static final String DEFAULT_BYTE_MODE_ENCODING = "utf-8";

   以支持中文

 

三、生成代码

 

     1. GenerateQRCode.java

        其中的 DateUtils.getStringDate1() 是一个时间格式的String类型(yyyyMMddHH:mm:ss)

 

import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

import org.apache.log4j.Logger;

import cn.com.do1.component.util.DateUtils;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;

/**
 * @ClassName: GenerateQRCode
 * @Description: 生成二维码
 * @author 
 * @company 
 * @date 2012-11-9
 * @version V1.0
 */
public final class GenerateQRCode {

	private static final Logger log = Logger.getLogger(GenerateQRCode.class);

	private static final GenerateQRCode instance = new GenerateQRCode();

	private GenerateQRCode() {
	}

	public static GenerateQRCode getInstance() {
		return instance;
	}

	private static final int BLACK = 0xff000000;
	private static final int WHITE = 0xFFFFFFFF;

	/**
	 * @Title: generate
	 * @Description: 生成二维码
	 * @param assetsName
	 *            二维码图片名称
	 * @param params
	 *            二维码信息
	 * @param width
	 *            生成的图片的宽
	 * @param height
	 *            生成的图片的高
	 * @param path
	 *            二维码图片存放目录
	 * @throws Exception
	 * @return String 二维码图片名称
	 * @author 
	 * @date 2012-11-9
	 */
	public String generate(String assetsName, String params, String path,
			int width, int height) throws Exception {

		log.info("GenerateQRCode-->start to generate qrcode.");
		log.info("the qrcode's save path is:" + path);

		File file = new File(path);

		if (!file.exists()) {
			file.mkdirs();
		}

		// 二维码图片名称
		String fileName = assetsName.concat("_")
				.concat(DateUtils.getStringDate1()).concat(".png");

		// 二维码图片存放路径
		path = path.concat(fileName);

		log.info("the qrcode's path is:" + path);

		file = new File(path);

		if (!file.exists()) {
			file.createNewFile();
		}

		BitMatrix bitMatrix = new MultiFormatWriter().encode(params,
				BarcodeFormat.QR_CODE, width, height);

		writeToFile(bitMatrix, "png", file);

		log.info("GenerateQRCode-->end to generate qrcode.");

		return fileName;
	}

	public static void writeToFile(BitMatrix matrix, String format, File file)
			throws Exception {

		BufferedImage image = toBufferedImage(matrix);

		ImageIO.write(image, format, file);

	}

	public static BufferedImage toBufferedImage(BitMatrix matrix) {

		int width = matrix.getWidth();

		int height = matrix.getHeight();

		BufferedImage image = new BufferedImage(width, height,
				BufferedImage.TYPE_INT_ARGB);

		for (int x = 0; x < width; x++) {

			for (int y = 0; y < height; y++) {

				image.setRGB(x, y, matrix.get(x, y) == true ? BLACK : WHITE);

			}

		}

		return image;

	}
}

 

四、调用

    其中,Constants.CHANGE_LINE 表示换行符 \r\n

public void encode() {
		// 二维码内容
		StringBuffer params = new StringBuffer();
		
		params.append("资产名称:").append("你好").append(Constants.CHANGE_LINE);
		params.append("资产编号:").append("adfadf").append(Constants.CHANGE_LINE);
		params.append("资产类型:").append("网络设备").append(Constants.CHANGE_LINE);
		params.append("所属部门:").append("综合部").append(Constants.CHANGE_LINE);
		params.append("制码时间:").append(DateUtils.getStringDate()).append(Constants.CHANGE_LINE);
		params.append("审核人:").append("管理员");
                // 二维码图片生成路径
		String path = "D:\\Project\\foshan_tobacco\\code\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\wtpwebapps\\fsycsms\\images\\qrcodeImg\\";
		try {
			String imgPath = GenerateQRCode.getInstance().generate(
					"你好",params.toString(), path, 200, 200);
			
			System.out.println(imgPath);

			System.out.println("生成二维码成功");

		} catch (WriterException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

 

五、附件

     具体的代码请查看附件 fsycsms-qrcode.rar

     附件的工程是一个maven工程。

     请导入 eclipse 中,eclipse 我使用的版本是 eclipse-jee-indigo-SR2-win32    (3.7的)

     工程中的代码结构如下:

   

 

其中的源包(Source Folder) src/qrcode/core 和 src/qrcode/javase ,就是在上面第2步中取出的包

  • 大小: 26 KB
分享到:
评论
4 楼 xurichusheng 2014-02-19  
814687491 写道
测试了一下,无法换行!


你可以自定义自己的换行符的
3 楼 xurichusheng 2014-02-19  
814687491 写道
Constants.CHANGE_LINE  Constants类是哪个包下的?


Constants 这个是自定义的类
2 楼 814687491 2014-01-22  
测试了一下,无法换行!
1 楼 814687491 2014-01-22  
Constants.CHANGE_LINE  Constants类是哪个包下的?

相关推荐

    Google ZXing制作的条形码、二维码的生成、扫描Demo 源码.zip

    这个压缩包中的源码是一个演示应用,展示了如何使用ZXing库来创建、读取条形码和二维码。 生成条形码和二维码是现代移动应用中常见的功能,它们能够快速传递信息,如网址、联系信息、产品代码等。ZXing库提供了丰富...

    Java使用Zxing包制作二维码.doc

    Java 使用 Zxing 包制作二维码 Java 使用 Zxing 包制作二维码是指使用 Java 语言和 Zxing 库来生成和解析二维码的过程。Zxing 库是 Google 提供的关于条码(一维码、二维码)的解析工具,提供了二维码的生成与解析...

    google.zxing自定义生成微信二维码.rar

    本项目是关于如何使用`google.zxing`库自定义生成微信二维码的实践,它允许我们将二维码与任意图片进行结合,创建出既实用又具有个性化的二维码图像。 `google.zxing`,又称ZXing("zebra crossing"的缩写),是一...

    完整的利用itext5、zxing、QRCore制作pdf、二维码图片插入pdf,并解析pdf中的二维码信息

    在Android应用中,可以使用QRCore库集成ZXing的二维码扫描功能。首先,需要在AndroidManifest.xml中添加相机权限,然后在Activity中调用`com.google.zxing.client.android.IntentIntegrator`来启动扫描界面。扫描...

    android Zxing扫描二维码条形码功能仿微信自定义扫码框扫描线边框样式Eclipse版本

    在接收到每一帧数据后,使用Zxing的`decode()`函数进行解码,这个函数会尝试识别图像中的条形码或二维码。如果识别成功,`decode()`会返回一个Result对象,包含条码或二维码的数据。 当识别到条码或二维码时,你...

    利用zxing制作解码二维码

    ZXing(Zebra Crossing)是Google开发的一个开源项目,专门用于处理一维条形码和二维条码,包括二维码。本教程将详细介绍如何利用ZXing库创建一个简单的二维码解码和生成应用。 首先,我们需要了解ZXing库的核心...

    制作二维码

    要使用ZXing制作二维码,我们首先需要在项目中引入ZXing库。如果你使用的是Java或Android开发环境,可以通过Maven或Gradle依赖管理工具添加ZXing的依赖。对于Java项目,可以在pom.xml文件中添加如下依赖: ```xml ...

    GoogleZxing(制作二维码的jar,绝对好用,附上制作二维码代码)

    这个库在IT行业中被广泛使用,尤其在移动应用开发中,用于创建快速扫描和生成二维码的功能。在Android平台上,Zxing通常通过集成其核心库来实现二维码的生成与解码。 ### 1. 二维码概述 二维码(Quick Response ...

    Java生成二维码+logo+文字说明.rar

    在Java中生成二维码,通常会借助第三方库,这里提到的是Google的ZXing(Zebra Crossing)项目。ZXing是一个开源的多格式一维/二维条码图像处理库,它支持多种条码和二维码的生成与解码,包括QR码、Data Matrix、UPC...

    Java制作二维码.zip

    总之,"Java制作二维码.zip"的内容可能包括如何配置和使用zxing库,以及如何在Spring Boot应用中实现二维码生成的示例代码。通过学习这些材料,开发者可以掌握在Java环境中生成二维码的基本技能,并能够将其应用到...

    android 制作二维码源码.rar

    在Android平台上制作二维码是一项常见的需求,特别是在开发移动应用或者实现数据快速传输时。这个"android 制作二维码源码.rar"文件很可能包含了实现这一功能的完整源代码。下面,我们将详细探讨Android中如何生成和...

    android 二维码扫描与制作

    5. **二维码制作**:生成二维码主要使用`MultiFormatWriter`类,它可以编码多种格式的数据。首先创建一个`BitMatrix`对象,然后调用`encode()`方法编码数据,最后通过`BarcodeEncoder`将其转换为Bitmap图像。以下是...

    java制作二维码

    在Java中使用ZXing来制作二维码,你需要先将其添加到你的项目依赖中。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;com.google.zxing&lt;/groupId&gt; &lt;artifactId&gt;core &lt;version&gt;3.4.1 ...

    java实现手机扫描二维码后网站跳转新页面

    2. **生成二维码**:使用`com.google.zxing.client.j2se.MatrixToImageWriter`类,将数据编码为二维矩阵,再转换为图像文件。 ```java public void generateQRCode(String content, String filePath) { Map, ...

    Android 仿微信二维码名片制作,生成二维码,扫码生成名片表单信息

    基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果,Android 仿微信二维码名片制作,生成二维码,扫码生成名片表单信息,这里是实例代码,项目详情...

    制作二维码.zip

    本压缩包文件"制作二维码.zip"显然是针对Android开发人员的一个资源,旨在教授如何在Android应用中生成和解析二维码。以下是关于这个主题的详细知识点: 1. **二维码基本原理**: - 二维码是一种二维条码,由黑...

    安卓条码扫描二维码相关-仿微信二维码制作二维码扫码读取名片信息.rar

    这个压缩包文件“安卓条码扫描二维码相关-仿微信二维码制作二维码扫码读取名片信息.rar”似乎提供了一个实现类似微信功能的示例项目,让我们来详细探讨一下相关的知识点。 1. **二维码技术**: - 二维码是一种二维...

    二维码制作_java_Demo

    总结,这个"二维码制作_java_Demo"主要涵盖了如何使用Java和ZXing库来生成二维码的基本步骤,以及如何进行个性化定制。理解并实践这些代码,你就能轻松创建出具有不同特性的二维码,满足各种应用场景的需求。在实际...

Global site tag (gtag.js) - Google Analytics