依赖
<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>
代码:
1.解决二维码中文乱码???问题
2.设置二维码的大小和周围白边
3.生成2d图像
4.生成文件
public class TestCode {
public static void main(String[] args) throws IOException, WriterException {
String content="12345678";
//解决中文????
//content=new String(content.getBytes(),"iso-8859-1");
String filePath="D:\\JavaProject\\test.png";
encode(content,filePath);
System.out.println("运行结束");
}
public static void encode(String content,String filePath) throws WriterException, IOException {
int width=500;
int height=200;
//放二维码 解决中文乱码问题 设置码的样式
HashMap<EncodeHintType, Object> encodeHints = new HashMap<EncodeHintType, Object>();
encodeHints.put(EncodeHintType.CHARACTER_SET,"utf-8");
//周边空白变为0,默认周围空白为10
encodeHints.put(EncodeHintType.MARGIN,0);
//生成图像2d矩阵
//BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height,encodeHints);
BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height,encodeHints);
Path path = FileSystems.getDefault().getPath(filePath);
//生成图片文件
MatrixToImageWriter.writeToPath(bitMatrix,"png",path);
}
}
其中 BarcodeFormat可以换不同的样式,如下表所示,常用的是QR_CODE二维码样式
名称 | 作用 |
AZTEC | 高纠错级别的二维码,常用于机票、医院患者识别 |
codabar | 条形码,常用于序列号领域,血库、会员卡、订单 |
code_39/93/128 | 条形码 |
ean_8/ean_13 | 商店条形码 |
itf | 运输包装条形码 |
rss | 条形码,一维码和二维码的组合码,常用于非常小的产品项目 |
qr_code | 二维码 |