import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Hashtable;
import javax.imageio.ImageIO;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;
public class ZxingUtil {
private static final int BLACK = 0xFF000000;
private static final int WHITE = 0xFFFFFFFF;
/**
* @param url 二维码content
* @param width
* @param height
* @param flag
* @return
* @throws Exception
*/
public static BitMatrix buildBitMatrix(String url,int width,int height,boolean flag) throws Exception {
Hashtable hints = new Hashtable();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");//内容所使用编码
BitMatrix bitMatrix = new MultiFormatWriter().encode(url,BarcodeFormat.QR_CODE, width, height, hints);
return flag?deleteWhite(bitMatrix):bitMatrix;
}
/**
* 保存二维码图片
* @param bitMatrix 二维码
* @param format 保存格式
* @param filepath 保存路径
* @param picname 保存name
* @throws Exception
*/
public static void creatTwoCode(BitMatrix bitMatrix,String format,String filepath,String picname) throws Exception {
File outputFile = new File(filepath+File.separator+picname+"."+format);//生成二维码图片
writeToFile(bitMatrix, format, outputFile);
}
public static BitMatrix deleteWhite(BitMatrix matrix){
int[] rec = matrix.getEnclosingRectangle();
int resWidth = rec[2] + 1;
int resHeight = rec[3] + 1;
BitMatrix resMatrix = new BitMatrix(resWidth, resHeight);
resMatrix.clear();
for (int i = 0; i < resWidth; i++) {
for (int j = 0; j < resHeight; j++) {
if (matrix.get(i + rec[0], j + rec[1]))
resMatrix.set(i, j);
}
}
return resMatrix;
}
public static BufferedImage toBufferedImage(BitMatrix matrix) {
int width = matrix.getWidth();
int height = matrix.getHeight();
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
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 void writeToFile(BitMatrix matrix, String format, File file) throws IOException {
BufferedImage image = toBufferedImage(matrix);
if (!ImageIO.write(image, format, file)) {
throw new IOException("Could not write an image of format " + format + " to " + file);
}
}
public static void writeToStream(BitMatrix matrix, String format, OutputStream stream) throws IOException {
BufferedImage image = toBufferedImage(matrix);
if (!ImageIO.write(image, format, stream)) {
throw new IOException("Could not write an image of format " + format);
}
}
}
分享到:
相关推荐
谷歌二维码库,也被称为ZXing(Zebra Crossing),是一个开源的、多平台的条码读取和生成项目。ZXing提供了各种格式的条形码和二维码处理能力,包括QR码、Data Matrix、UPC和EAN等。在给定的压缩包中,包含了三个...
ZXing(Zebra Crossing)是Google开发的一个开源项目,它提供了多种格式的一维和二维条码的读取、写入和处理能力。在Android平台上,ZXing被广泛用于实现二维码扫描功能,使得用户可以通过手机摄像头实时捕捉并解析...
在Android开发中,ZXing(Zebra Crossing)是一个流行的条形码和二维码处理库,而zxing-android-embedded是ZXing库的一个简化版本,专为Android应用设计,方便集成到项目中实现二维码的生成和扫描功能。下面我们将...
ZXing,全称为“Zebra Crossing”,是一款开源的、跨平台的条形码和二维码读取库。这个项目由Google发起并维护,旨在提供一种简单、高效的方式处理各种类型的条形码和二维码,包括但不限于EAN、UPC、Code 128、QR ...
ZXing(Zebra Crossing)是Google开发的一个开源项目,它提供了多种格式的一维和二维条码的读取和编写功能。这个"zxing-code-1.7&zxing-j2se-1.7[用于编解二维码].7z"压缩包包含的是ZXing项目的1.7版本,专门...
ZXing,全称为“Zebra Crossing”,是一款开源的、跨平台的条码和二维码处理库。这个项目由Google开发并维护,提供了多种语言版本的API,包括Java、C++、Python等,支持多种条码格式,如QR码、Data Matrix、UPC、EAN...
ZXing(Zebra Crossing)是一个开源的、多平台的条形码和二维码读取与生成库,由Google开发并维护。ZXing在Java语言的基础上,提供了多种编程语言的API,如Android、iOS、C#等,使得开发者可以方便地集成到自己的...
解析二维码时,可以使用`com.google.zxing.MultiFormatReader`类,它可以尝试多种格式的解码,包括QR Code。通过`Reader`接口的`decode(BinaryBitmap)`方法,可以对图像进行解码,获取其中的数据。 6. **应用示例*...
java实现二维码的绘制和解析(zxing by google) 截止目前为止最新版本为1.7,提供以下编码格式的支持: UPC-A and UPC-E EAN-8 and EAN-13 Code 39 Code 93 Code 128 QR Code ITF Codabar RSS-14 (all ...
zxing jar包 二维码Java开发包 Android开发条形码,二维码
1. **创建二维码**:使用`com.google.zxing.Writer`接口及其子类,如`QRCodeWriter`,来生成二维码图像。首先,创建一个Writer实例,然后调用其`encode`方法,传入你要编码的数据和格式。 2. **将二维码转换为...
"ZXing-client-android"是一个基于Android平台的二维码和条形码扫描与生成工具的源代码库。这个项目的核心是ZXing(发音为 "zebra crossing"),它是一个开放源代码的多格式一维和二维条码图像处理库,用于读取、...
zxing-3.3.0,java开发二维码的jar包,包含core和javase下的内容,可分别调用其中方法生成二维码并输出到文件
ZXing,又名Zebra Crossing,是一款开源的、跨平台的条形码和二维码读取库。它最初由Google开发,后来成为一个独立的开源项目,旨在为各种设备和环境提供便捷的条码识别功能。在C++领域,ZXing-C++是其针对C++语言的...
------------------------二维码生成所需的jar包-------------------------------
ZXing(Zebra Crossing)是一个开源的、跨平台的条码和二维码读写库,它支持多种条码格式,如QR Code、Data Matrix、UPC等。本项目着重讲解如何利用ZXing在Android平台上实现一个自定义的二维码扫描功能。 首先,...
总之,Google Zxing-2.1是一个强大的二维码处理库,它简化了二维码的读取和生成过程,为Java开发者提供了丰富的功能,无论是桌面应用还是移动应用,都可以轻松地集成二维码功能。对于想要涉足二维码开发的程序员来说...
implementation 'com.google.zxing:core:3.4.1' implementation 'com.journeyapps:zxing-android-embedded:3.6.0' } ``` 二、Zxing库的核心组件 1. `BarcodeScanner`: 这是Zxing库的主要组件,用于扫描和解码...
在Android开发中,ZXing通常用于实现扫描和识别二维码或条形码的功能,为移动应用增加数据录入或链接跳转的能力。 `zxing-core-3.2.0.jar`是ZXing项目的最新版本,提供了一个Java接口,使得开发者可以在不依赖...
Google开源的ZXing(Zebra Crossing)库为开发者提供了跨平台的二维码和条形码生成与解码能力。本项目以ZXing为基础,结合自定义功能,如生成带有Logo的彩色二维码,为开发人员提供了更丰富的应用场景。 ZXing(又...