一、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步中取出的包
相关推荐
这个压缩包中的源码是一个演示应用,展示了如何使用ZXing库来创建、读取条形码和二维码。 生成条形码和二维码是现代移动应用中常见的功能,它们能够快速传递信息,如网址、联系信息、产品代码等。ZXing库提供了丰富...
Java 使用 Zxing 包制作二维码 Java 使用 Zxing 包制作二维码是指使用 Java 语言和 Zxing 库来生成和解析二维码的过程。Zxing 库是 Google 提供的关于条码(一维码、二维码)的解析工具,提供了二维码的生成与解析...
本项目是关于如何使用`google.zxing`库自定义生成微信二维码的实践,它允许我们将二维码与任意图片进行结合,创建出既实用又具有个性化的二维码图像。 `google.zxing`,又称ZXing("zebra crossing"的缩写),是一...
在Android应用中,可以使用QRCore库集成ZXing的二维码扫描功能。首先,需要在AndroidManifest.xml中添加相机权限,然后在Activity中调用`com.google.zxing.client.android.IntentIntegrator`来启动扫描界面。扫描...
在接收到每一帧数据后,使用Zxing的`decode()`函数进行解码,这个函数会尝试识别图像中的条形码或二维码。如果识别成功,`decode()`会返回一个Result对象,包含条码或二维码的数据。 当识别到条码或二维码时,你...
ZXing(Zebra Crossing)是Google开发的一个开源项目,专门用于处理一维条形码和二维条码,包括二维码。本教程将详细介绍如何利用ZXing库创建一个简单的二维码解码和生成应用。 首先,我们需要了解ZXing库的核心...
要使用ZXing制作二维码,我们首先需要在项目中引入ZXing库。如果你使用的是Java或Android开发环境,可以通过Maven或Gradle依赖管理工具添加ZXing的依赖。对于Java项目,可以在pom.xml文件中添加如下依赖: ```xml ...
这个库在IT行业中被广泛使用,尤其在移动应用开发中,用于创建快速扫描和生成二维码的功能。在Android平台上,Zxing通常通过集成其核心库来实现二维码的生成与解码。 ### 1. 二维码概述 二维码(Quick Response ...
在Java中生成二维码,通常会借助第三方库,这里提到的是Google的ZXing(Zebra Crossing)项目。ZXing是一个开源的多格式一维/二维条码图像处理库,它支持多种条码和二维码的生成与解码,包括QR码、Data Matrix、UPC...
总之,"Java制作二维码.zip"的内容可能包括如何配置和使用zxing库,以及如何在Spring Boot应用中实现二维码生成的示例代码。通过学习这些材料,开发者可以掌握在Java环境中生成二维码的基本技能,并能够将其应用到...
在Android平台上制作二维码是一项常见的需求,特别是在开发移动应用或者实现数据快速传输时。这个"android 制作二维码源码.rar"文件很可能包含了实现这一功能的完整源代码。下面,我们将详细探讨Android中如何生成和...
5. **二维码制作**:生成二维码主要使用`MultiFormatWriter`类,它可以编码多种格式的数据。首先创建一个`BitMatrix`对象,然后调用`encode()`方法编码数据,最后通过`BarcodeEncoder`将其转换为Bitmap图像。以下是...
在Java中使用ZXing来制作二维码,你需要先将其添加到你的项目依赖中。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>com.google.zxing</groupId> <artifactId>core <version>3.4.1 ...
2. **生成二维码**:使用`com.google.zxing.client.j2se.MatrixToImageWriter`类,将数据编码为二维矩阵,再转换为图像文件。 ```java public void generateQRCode(String content, String filePath) { Map, ...
基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果,Android 仿微信二维码名片制作,生成二维码,扫码生成名片表单信息,这里是实例代码,项目详情...
本压缩包文件"制作二维码.zip"显然是针对Android开发人员的一个资源,旨在教授如何在Android应用中生成和解析二维码。以下是关于这个主题的详细知识点: 1. **二维码基本原理**: - 二维码是一种二维条码,由黑...
这个压缩包文件“安卓条码扫描二维码相关-仿微信二维码制作二维码扫码读取名片信息.rar”似乎提供了一个实现类似微信功能的示例项目,让我们来详细探讨一下相关的知识点。 1. **二维码技术**: - 二维码是一种二维...
总结,这个"二维码制作_java_Demo"主要涵盖了如何使用Java和ZXing库来生成二维码的基本步骤,以及如何进行个性化定制。理解并实践这些代码,你就能轻松创建出具有不同特性的二维码,满足各种应用场景的需求。在实际...