package zjpt.zwsm.utils; import com.google.zxing.*; import com.google.zxing.client.j2se.BufferedImageLuminanceSource; import com.google.zxing.common.BitMatrix; import com.google.zxing.common.HybridBinarizer; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Hashtable; public class QrBarCode { private static final String CODE = "utf-8"; private static final int BLACK = 0xff000000; private static final int WHITE = 0xFFFFFFFF; /** * 生成RQ二维码 * * @param str 内容 * @param height 高度(px) * @author wuhongbo */ public static BufferedImage getRQ(String str, Integer height) { if (height == null || height < 100) { height = 200; } try { // 文字编码 Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>(); hints.put(EncodeHintType.CHARACTER_SET, CODE); BitMatrix bitMatrix = new MultiFormatWriter().encode(str, BarcodeFormat.QR_CODE, height, height, hints); return toBufferedImage(bitMatrix); // 输出方式 // 网页 // ImageIO.write(image, "png", response.getOutputStream()); // 文件 // ImageIO.write(image, "png", file); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 生成一维码(128) * * @param str * @param width * @param height * @return * @author wuhongbo */ public static BufferedImage getBarcode(String str, Integer width, Integer height) { if (width == null || width < 200) { width = 200; } if (height == null || height < 50) { height = 50; } try { // 文字编码 Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>(); hints.put(EncodeHintType.CHARACTER_SET, CODE); BitMatrix bitMatrix = new MultiFormatWriter().encode(str, BarcodeFormat.CODE_128, width, height, hints); return toBufferedImage(bitMatrix); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 生成二维码,写到文件中 * * @param str * @param height * @param file * @throws IOException * @author wuhongbo */ public static void getQRWriteFile(String str, Integer height, File file) throws IOException { BufferedImage image = getRQ(str, height); ImageIO.write(image, "png", file); } /** * 生成一维码,写到文件中 * * @param str * @param height * @param file * @throws IOException * @author wuhongbo */ public static void getBarcodeWriteFile(String str, Integer width, Integer height, File file) throws IOException { BufferedImage image = getBarcode(str, width, height); ImageIO.write(image, "png", file); } /** * 转换成图片 * * @param matrix * @return * @author wuhongbo */ private 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) ? BLACK : WHITE); } } return image; } /** * 解码(二维、一维均可) */ public static String read(File file) { BufferedImage image; try { if (file == null || file.exists() == false) { throw new Exception(" File not found:" + file.getPath()); } image = ImageIO.read(file); LuminanceSource source = new BufferedImageLuminanceSource(image); BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); Result result; // 解码设置编码方式为:utf-8, Hashtable hints = new Hashtable(); hints.put(DecodeHintType.CHARACTER_SET, "utf-8"); result = new MultiFormatReader().decode(bitmap, hints); return result.getText(); } catch (Exception e) { e.printStackTrace(); } return null; } public static void main(String[] args) throws Exception { File file = new File("D://test.png"); // 生成二维码 //QRUtil.getQRWriteFile("http://www.baid.com", 200, file); // 生成一维码 QrBarCode.getBarcodeWriteFile("6940577300018", null, null, file); System.out.println("-----成生成功----"); System.out.println(); // 解析生成的图片 String jxr = QrBarCode.read(file); System.out.println("-----解析成功----"); System.out.println(jxr); } }
相关推荐
1. **生成条码/二维码图像**:使用相应的库生成一维码或二维码的图像文件,常见的格式有PNG、SVG等。 2. **设置打印机接口**:了解打印机的接口,这可能是通过网络(如Wi-Fi、蓝牙)、USB或者通过共享网络打印机的...
它支持多种条码格式,包括一维条形码(如EAN-13、UPC-A)和二维条形码(如QR Code、Data Matrix)。在Java环境下,我们可以利用ZXing的`com.google.zxing`包中的类和方法来创建条形码和二维码。 首先,要生成条形码...
Java生成和解析一维码二维码是一项常见的编程任务,特别是在物联网(IoT)和移动应用中。一维码,如条形码,常用于商品的库存管理和零售业;而二维码则包含更多数据,常用于电子票务、信息分享和追踪物流等场景。在...
ZXing,意为“条形码扫描”,是一个强大的工具,支持多种一维码和二维码的生成和解码。其核心功能包括编码(生成二维码或条形码图像)和解码(识别图像中的条形码)。ZXing提供了多种语言的API,包括Java,便于...
总的来说,Java生成一维码和二维码的能力强大且灵活,通过引入合适的库并理解其API,开发者可以轻松地在项目中实现这一功能。无论是在网页、桌面应用还是移动应用中,都能找到合适的方法来满足需求。记住,测试和...
ZXing(Zebra Crossing)是Google开发的一个开源项目,专门用于处理一维条形码和二维二维码的生成与读取。这个项目的名字来源于其英文名的首字母缩写,象征着“斑马线”,寓意在数据世界中指引信息的交汇。ZXing提供...
总之,Java生成一维码主要依赖于第三方库,如ZXing。通过这些库,可以方便地将数据编码为一维码图像,然后在各种应用场景中使用,如网页、打印标签等。在实际开发中,还需要考虑到错误处理、一维码格式的选择以及与...
在IT行业中,生成一维码或条形码的图片是一项常见的任务,特别是在物流、库存管理、产品标识等领域。本文将详细讲解如何使用Java语言来批量生成一维码图片,以及可能遇到的问题和解决方案。 首先,Java中实现一维码...
ZXing,意为“斑马线交叉”,是一个强大的开源库,支持多种条码格式,包括一维条形码(如Code 39、Code 128、UPC/EAN等)和二维条形码(如QR Code、Aztec、Data Matrix等)。ZXing提供Java、Android和C#等多种语言的...
1. 一维码:一维码(如条形码)是最早使用的编码方式,通常包含线性数据,如EAN-13、UPC-A等。它只能存储有限的数字和字母信息,一般用于商品的快速扫描识别。 2. 二维码:二维码(Quick Response Code)是一种二维...
- **一维码**:如常见的条形码,仅能沿一个维度(水平)存储信息,容量有限,一般用于表示简单的商品编码。 - **二维码**:在二维空间内存储信息,包含更多数据,如URL、文本、联系人信息等,且纠错能力更强。 2....
Zxing,全称“ZXing (Zebra Crossing)”,是一个开源的条码解码库,支持多种条形码和二维码格式,如QR Code、Code 128、UPC-A等。在生成物流打印单时,我们可以使用Zxing的编码功能将物流单号或其他数据转化为对应的...
barcode4j是一个开源的Java库,专为生成一维码和二维码而设计。它支持多种一维码格式(如EAN、UPC、Code 128、Code 39等)和二维码格式(如QR Code、Aztec、PDF417等)。这个工具的亮点在于其简单易用,开发者只需将...
在Java编程环境中,生成PDF417码和其他一维码、二维码的技术通常依赖于特定的库或API。这些库能够帮助开发者轻松地将文本信息转换为条码图像,以便打印或显示。以下是一些常见的Java条码生成库: 1. **ZXing (Zebra...
ZXing是一个开源的、多平台的条形码和二维码读取、生成项目,它提供了多种编程语言的支持,包括Java。 首先,`core-3.3.3.jar`和`zxing-javase.jar`是ZXing库的核心组件。`core.jar`包含了ZXing的底层解码功能,而`...
本篇文章将详细讲解如何在Android应用中实现二维码和一维码(条形码)的生成、扫描以及解析。 首先,我们要理解二维码和一维码的基本概念。二维码是一种二维条形码,可以存储更多的信息,如网址、文本、联系人信息...
二维码(Quick Response Code)是一种二维条形码,能够存储大量的文本、数字、网址等信息,通过手机或其他设备扫描即可快速读取。相比传统的条形码,二维码具有信息容量大、纠错能力强、编码范围广等特点。 在Java...
在Android平台上,生成一维码(条形码)和二维码是一项常见的需求,这通常涉及到集成第三方库或使用系统提供的API。本篇文章将详细介绍如何在Android应用中实现这一功能,主要聚焦于生成环节,不涉及扫描。 一、...
【基于Java开发的二维码生成小程序】是一个利用Java编程语言实现的实用工具,它能够帮助用户快速生成可扫描的二维码,这些二维码在扫描后能够跳转到预设的网站。这个小程序集成了二维码编码技术,使得非技术人员也能...
接下来,我们创建一个服务类,例如`CodeGeneratorService`,来实现二维码和条形码的生成方法。以下是一个简单的示例: ```java import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; ...