zxing生成二维码生成并添加附加信息
2018-04-14 21:09:12
940次阅读
0个评论
需求说明
在一些场景中,需要在二维码底部添加一些相关的信息,例如二维码表示一个设备时,下方显示该设备的位置信息
实现方式
首先,根据需求的长和宽生成一个BufferedImage
/**
* 描述:建立布景并设置背景色
* @author renpengfei
* @since JDK 1.8
*/
BufferedImage outputImage = new BufferedImage(DEVICE_QRCODE_WIDTH,DEVICE_IMG_HEIGHT,BufferedImage.TYPE_INT_RGB);
Graphics g = outputImage.getGraphics();
g.setColor(Color.WHITE);
g.fillRect(0,0, DEVICE_QRCODE_WIDTH, DEVICE_IMG_HEIGHT);
g.dispose();
随后,将二维码本身表达的信息使用 google的zxing生成
/**
* 生成二维码
*/
ErrorCorrectionLevel level = ErrorCorrectionLevel.H;
HashMap<EncodeHintType,Object> hints = new HashMap<EncodeHintType,Object>();
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
hints.put(EncodeHintType.ERROR_CORRECTION, level);
hints.put(EncodeHintType.MARGIN, 0);
BitMatrix m = new MultiFormatWriter().encode(deviceQrcode, BarcodeFormat.QR_CODE, DEVICE_QRCODE_WIDTH, DEVICE_QRCODE_HEIGHT,hints);
/**
* 二维码写入到bufferedImage
**/
BufferedImage imageNew = new BufferedImage(DEVICE_QRCODE_WIDTH, DEVICE_QRCODE_HEIGHT,BufferedImage.TYPE_INT_RGB);
for (int x = 0; x < DEVICE_QRCODE_WIDTH; x++) {
for (int y = 0; y < DEVICE_QRCODE_HEIGHT; y++) {
imageNew.setRGB(x, y, m.get(x, y) ? DEVICE_QRCODE_BLACK : DEVICE_QRCODE_WHITE);
}
}
然后将二维码写入BufferedImage中:
/**
* 描述:添加二维码
*/
int[] imageNewArray = new int[DEVICE_QRCODE_WIDTH*DEVICE_QRCODE_HEIGHT];
imageNewArray = imageNew.getRGB(0,0,DEVICE_QRCODE_WIDTH,DEVICE_QRCODE_HEIGHT,imageNewArray,0,DEVICE_QRCODE_WIDTH);
outputImage.setRGB(0,0,DEVICE_QRCODE_WIDTH,DEVICE_QRCODE_HEIGHT,imageNewArray,0,DEVICE_QRCODE_WIDTH);
将所需要的信息写入BufferedImage,这样就得到我们所需要的图片供后续操作,可以下载或者直接显示到页面中。
Graphics gText = outputImage.createGraphics();
gText.setColor(Color.black);
gText.setFont(new Font("普通", Font.PLAIN, DEVICE_INFO_FONT_SIZE));
gText.drawString(deviceInfo, 0, DEVICE_QRCODE_HEIGHT+DEVICE_INFO_FONT_SIZE);
gText.dispose();
return outputImage;
00
相关话题
- zxing读写二维码并添加Logo
- google kaptcha验证码生成器
- MySQL添加允许登录IP
- Java中文算数验证码
- springboot添加定时器
- FFmpeg生成视频预览缩略图
- hls播放m3u8 添加header请求头,在请求ts的url上添加参数
- Vue3+Vite+Nginx 二级路径部署
- ffmpeg 降低视频分辨率并保证画质
- FastDFS集成Nginx并开启图片防盗链
- 随机生成姓名、性别、手机号、住址、email
- 口感醇正的毒鸡汤,不毒不要喝!毒鸡汤锦集二
- Fabric.js实作: 图片上传并透过拖曳进入canvas
- FFmpeg把mp4切片成hls生成m3u8
- 毒鸡汤为什么人人爱喝?因为它让我们在某种程度上为自己可以看清世界并还能继续生活而自豪!毒鸡汤锦集十一