目录
一、Google二维码工具ZXing:
简介:
二维码现在是非常的火热,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。现在我们使用Google提供的ZXing开源类库来体验一下二维码的生成与解析。
引入依赖:
<dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.3.0</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.3.0</version> </dependency> |
示例:
package com.zzs.zxing;
import java.awt.image.BufferedImage; import java.io.File; import java.util.HashMap; import java.util.Map;
import javax.imageio.ImageIO;
import org.junit.Test;
import com.google.zxing.BarcodeFormat; import com.google.zxing.Binarizer; import com.google.zxing.BinaryBitmap; import com.google.zxing.EncodeHintType; import com.google.zxing.LuminanceSource; import com.google.zxing.MultiFormatReader; import com.google.zxing.MultiFormatWriter; import com.google.zxing.Result; import com.google.zxing.client.j2se.BufferedImageLuminanceSource; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.common.HybridBinarizer;
public class ZXingTest { /** * Google提供的二维码生成 */ @Test public void test1() throws Exception { // 要生成二维码的内容 String content = "www.baidu.com";
Map hints = new HashMap(); hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
// Zxing是Google提供的关于条码 MultiFormatWriter multiFormatWriter = new MultiFormatWriter(); // 二维码的描述对象 BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, 400, 400, hints);// 这里指明是二维码以及其大小(若要生成条形码等可修改第二个参数)
// 生成的二维码路径 File file = new File("E://my.jpg"); MatrixToImageWriter. System.out.println("执行完毕"); }
/** * Google提供的解析二维码 */ @Test public void test2() throws Exception {
File file = new File("E:\\code.gif");// 二维码文件 BufferedImage image = ImageIO.read(file);
LuminanceSource source = new BufferedImageLuminanceSource(image); Binarizer binarizer = new HybridBinarizer(source); BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);
Map hints = new HashMap(); hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
MultiFormatReader formatReader = new MultiFormatReader(); Result result = formatReader.decode(binaryBitmap, hints);
System.out.println("result = " + result.toString()); System.out.println("resultFormat = " + result.getBarcodeFormat()); System.out.println("resultText = " + result.getText()); } } |
二、图片二维码生成工具 visual-qr-code:
visual-qr-code 是开源的图片二维码生成工具,可以创建出精美的二维码
使用示例:
import java.awt.Color; import java.io.IOException;
import org.junit.Test;
import com.boat.visualqrcode.VisualQRCode;
public class Visual_qr_code_Test { @Test public void testPOSITIONRECTANGLE() { String url = "https://gitee.com/boat824109722/visual-qr-code/tree/master/"; try { VisualQRCode.createQRCode(url, // 二维码内容、网址,必需 "E:\\purity.jpg", // 背景图片路径,必需 "E:\\qr.png", // 二维码输出路径,必需 'H', // 二维码容错等级,必需 new Color(2, 85, 43), // 二维码颜色,必需 null, // 二维码X轴起点,非必须,默认为图片的左上角 null, // 二维码Y轴起点,非必须,默认为图片的左上角 null, // 二维码的宽度,非必须,默认为背景图最小边 true, // 是否把背景图变成方形,非必须,默认为false不改变图片形状 VisualQRCode.POSITION_DETECTION_SHAPE_MODEL_RECTANGLE, // 二维码四个大码眼的形状,目前只支持方形和圆方形 VisualQRCode.FILL_SHAPE_MODEL_RECTANGLE);// 二维码点的形状,目前只支持方形和圆形 } catch (IOException e) { e.printStackTrace(); } } |
主要方法:
VisualQRCode.createQRCode(String content,
String bgPath,
String outPath,
char Level,
Color DF,
Integer startX,
Integer startY,
Integer QRCodeWidth,
Boolean isDeformation,
Integer fillPositionDetectionShapeModel,
Integer fillShapeModel
);
/**
1、content 二维码内容、网址,必需
2、bgPath 背景图片路径,必需
3、outPath 二维码输出路径,必需
4、Level 二维码容错等级,必需
可选:"L"、"M"、"Q"、"H"
L水平 7%的字码可被修正
M水平 15%的字码可被修正
Q水平 25%的字码可被修正
H水平 30%的字码可被修正
5、DF 二维码颜色,必需
startX 二维码X轴起点,非必须,默认为图片的左上角
startY 二维码Y轴起点,非必须,默认为图片的左上角
QRCodeWidth 二维码的宽度,非必须,默认为背景图最小边
二维码的起始X/Y加上QRCodeWidth<=图片的宽/高
6、isDeformation 是否把背景图变成方形,非必须,默认为false不改变图片形状
7、fillPositionDetectionShapeModel 二维码四个大码眼的形状,目前只支持方形和圆方形
可选:
POSITION_DETECTION_SHAPE_MODEL_RECTANGLE
POSITION_DETECTION_SHAPE_MODEL_ROUND_RECTANGLE
8、fillShapeModel 二维码点的形状,目前只支持方形和圆形
可选:
FILL_SHAPE_MODEL_RECTANGLE
FILL_SHAPE_MODEL_CIRCLE
*/
参考: