生成带有参数的二维码,并返回base64码到前端进行展示

package com.cx.www.cxbl.core.utils;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import sun.misc.BASE64Encoder;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Hashtable;

public class QRCodeUtil {

private static final int QRCOLOR = 0xFF000000; //默认是黑色
private static final int BGWHITE = 0xFFFFFFFF; //背景颜色

/**
* 生成带有参数的二维码,返回base64码
* @param contents
* @param width
* @param height
* @return
*/
public static String creatRrCode(String contents, int width, int height) {
String binary = null;
Hashtable hints = new Hashtable();
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
BitMatrix bitMatrix = null; // 1、读取文件转换为字节数组
try {
bitMatrix = new MultiFormatWriter().encode(contents, BarcodeFormat.QR_CODE, width, height, hints);
} catch (WriterException e) {
e.printStackTrace();
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
BufferedImage image = toBufferedImage(bitMatrix);
//转换成png格式的IO流
try {
ImageIO.write(image, "png", out);
} catch (IOException e) {
e.printStackTrace();
}
byte[] bytes = out.toByteArray();
// 2、将字节数组转为二进制
BASE64Encoder encoder = new BASE64Encoder();
binary = encoder.encodeBuffer(bytes).trim();
return binary;
}

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) ? 0xFF000000 : 0xFFFFFFFF);
}
}
return image;
}
/**
*测试生成二维码
? *
? *
? */
public static void main(String[] args) {
String binary = QRCodeUtil.creatRrCode("http://www.baidu.com", 200, 200);
System.out.println(binary);
}
}

ps:com.google.zxing? jar包地址为:http://repo1.maven.org/maven2/com/google/zxing/core/3.4.0/

相关文档

  • 推荐新学期学习计划13篇
  • 女生励志歌曲推荐
  • 口才艺术与社交礼仪的重点
  • 国庆节促销活动策划方案范文
  • 致我们终将逝去的小学生涯散文
  • 垂盆草常见虫害及防治方法
  • 高中英语考场作文范文
  • 梦见自已结婚是怎么了
  • 快节奏的社会
  • 百度清风算法推出更人性化,有人喜、有人哭!
  • 女生幸福暖心的个性签名句子
  • 区政办信息公开工作报告
  • 珠海有哪些地方适合老人和小孩游玩
  • sqlserver连接注册表信息丢失
  • 矫正牙齿的土方法
  • ufs 固态硬盘_eMMC、UFS、LPDDR都代表手机哪方面的性能?购机时该怎么看?
  • 河南平顶山鲁山知名特产有哪些 鲁山特产推荐
  • 《乘法估算》数学说课稿精选4篇
  • 汽车机油灯常亮的原因是什么
  • 为什么路由器的光信号灯变红
  • 出国过安检应该注意什么东西不能带
  • 一级建造师考过了可以不注册吗
  • Ubuntu安装go
  • 装载机的维修方法有哪些
  • 关于Java指定范围内生成随机数并进行排序
  • 关于农业生产谚语集锦
  • 社会居委会党总支个人工作总结精选多篇
  • 山水人家作文800字
  • 初中作文:科学改变世界
  • 2021店铺转让合同协议书5篇
  • 电脑版