一、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步中取出的包
相关推荐
Google ZXing制作的条形码、二维码的生成、扫描Demo 源码,可以做为你的学习设计参考。
利用google的开源工具zxing做的二维码解码和生成小工具,附带了非常简易的图形界面。里面的core.jar和javase.jar是需要用到的zxing里面的,务必导入。
基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果,Android 仿微信二维码名片制作,生成二维码,扫码生成名片表单信息,这里是实例代码,项目详情...
使用Google ZXing开源项目制作的条形码、二维码的生成、扫描Demo
全球现有的二维码多达200种以上,其中常见的技术标准有PDF417(美系标准),QRCode(日系标准),Code49,Code16K,CodeOne,DM(韩系标准),GM(中国...该工具借助google的开源项目zxing来实现1D/2D的编码和解码。
Google ZXing开源项目可以制作和扫描解析条形码、二维码 ZXing2.3.0的核心core包
zxing 是一款谷歌上开源项目,针对安卓扫描,生成二维码 的项目。 这个是工具包,网上有相关教程,可制作或扫描二维码 的安卓APP
可以使用文字、通讯录、应用软件、书签,制作、共享、保存二维码 典型用途: 名片交换:用这软件生成某联系人的二维码显示在屏幕(或者发送邮件、彩信),让对方扫描即可添加到通讯录; 文字、网址交换; 根据条码...
首先介绍这款应用:APP是一款二维码生成器,虽然如何制作二维码教程网上有很多,我这里再唠叨一下并把我的所有功能模块代码都分享出来。 在这里我们需要一个辅助类RGBLuminanceSource,这个类Google也提供了,我们...
###概述 概括 去做 ###概括 FHS 乐队 Android 应用程序的代码。 来源由和维护。 ... 版权所有。... 制作二维码阅读器页面 查找开源 QR 阅读器库(Zbar、Zxing?) 制作董事页面 实现解析推送通知