[Java]zxing生成qrcode二维码,带水印图片,中间带一个logo
在之前一篇文章,详细介绍了利用Zxing生成QRCode二维码以及BarCode条形码,并可以输出到文件或者输出到网页,很多时候,我们生成的二维码中间需要加一个logo图片,本次我们演示如何做:
一些依赖等基础准备工作,就不介绍了,如有需求,可以看:https://blog.terrynow.com/2021/02/06/java-google-zxing-generate-qrcode-or-barcode-output-to-file-or-web/
以读取一张logo的图片文件,生成到文件为例,说明详见代码注释
public static void main(String[] args) throws Exception {int qrWithAndHeight = 800; // 生成QRCode的图片长宽,假设时正方形int logoWithAndHeight = 80; // 嵌入的Logo的图片长宽,实际的logo图片可以比这个大,比这个小就不清晰String qrContent = "https://blog.terrynow.com"; // 实际QR扫出来的内容BufferedImage qrCodeImage = generateQRCode(qrContent, qrWithAndHeight);// 准备画图Graphics2D g = qrCodeImage.createGraphics();g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);// 读取logo文件,计算正中央的位置,画到qrCode图片中去Image logoImage = ImageIO.read(new File("/Users/Terry/Pictures/logo.jpg"));int logoXOrY = (qrWithAndHeight - logoWithAndHeight) / 2;g.drawImage(logoImage, logoXOrY, logoXOrY, logoWithAndHeight, logoWithAndHeight, null);g.dispose();//保存到文件,如需输出到网页,请看 https://blog.terrynow.com/2021/02/06/java-google-zxing-generate-qrcode-or-barcode-output-to-file-or-web/ImageIO.write(qrCodeImage, "jpeg", new File("/Users/Terry/Downloads/qrcode.jpg"));}public static BufferedImage generateQRCode(String content, int widthAndHeight) throws Exception {Hashtable<EncodeHintType, Object> hints = new Hashtable<>();hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);hints.put(EncodeHintType.MARGIN, 2);BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, widthAndHeight, widthAndHeight, hints);return toBufferedImage(bitMatrix);
}private static BufferedImage toBufferedImage(BitMatrix matrix) {int black = 0xFF000000;//用于设置图案的颜色int white = 0xFFFFFFFF; //用于背景色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));
// image.setRGB(x, y, (matrix.get(x, y) ? Color.YELLOW.getRGB() : Color.CYAN.getRGB()));}}return image;
}
如图,一个带logo的二维码就做好啦
更多开发和运维过程中遇到的坑已经解决问题的方案、干货分享请访问 https://blog.terrynow.com/
[Java]zxing生成qrcode二维码,带水印图片,中间带一个logo相关推荐
- Java zxing生成vcard二维码名片
一)背景 最近想做个vcard个人名片的二维码,从网上查了相关在线生成二维码功能,也能实现功能.但自己因为想用java的方式来实现,网上最多的案例都是依赖zxing jar实现,但由于要生成统一的vc ...
- zxing 生成 Qrcode (二维码)
Zxing生成Qrcode 工具类 1.引入依赖 <dependency><groupId>com.google.zxing</groupId><artifa ...
- JAVA C# Zxing生成的二维码数据转换为1bit的bmp下发到点阵终端。QRCode去白边,以bmp格式字节流发送,BMP图片解析
BMP图像文件完全解析 - 知乎 注意: 小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中.越向后地址越高,比如00 01 02,02的地址是2,是高. BMP文 ...
- Zxing生成自定义二维码样式
Zxing生成自定义二维码样式 现在几乎每个app都带有二维码,但是google提供的zxing包,只给我们提供了核心的二维码算法,而开发过程中经常有自定义二维码的样式的需求,这时候我们就要自己写工具 ...
- 【python 生成自己的二维码】推广二维码带log图片
如何安装?用pip安装 pip install qrcode pip install pillow # encoding: utf-8import sys reload(sys) sys.setdef ...
- qrcode将生成的二维码转成图片格式
微信里打开页面时需要长按识别二维码,所以需要转下图片 <div id="qrcode"></div> <img id="img"/ ...
- Python生成动态二维码,又掌握了一个小技巧
有点无聊,用Python来生成一个动态二维码吧,只需要几行代码~ 模块相关 我们要用到的是,MyQR这个库, 当然,最直接的方式,就是pip install pip install MyQR 参数讲解 ...
- JAVA实现生成原生二维码并上传至阿里云
JAVA生成二维码并上传至阿里云 pom依赖 <dependency><groupId>com.google.zxing</groupId><artifact ...
- 将qrcode生成的二维码转成图片
将页面上原来canvas格式的二维码隐藏,新建一个div用于存放生成的img标签 <div class="canvasCode" id ="query" ...
- vue 中使用 QRCode.js 链接转二维码带中间图片
前言 项目中需要一个链接转二维码的功能,找了一下 决定使用QRCode.js(很久以前的插件了) 下载引入1. <div id="qrcode" ref="qrco ...
最新文章
- Chain of Responsibility 责任链模式 MD
- idea中 maven打包时时报错User setting file does not exist C:\Users\lenevo\.m2\setting.xml,
- python调用shell命令-Python调用shell命令常用方法(4种)
- 聊聊ajax,聊聊Ajax()中data()基本知识以及实例分析
- tensorflow 按维度相加_人工智能 TensorFlow 必知必会编程概念整理
- 一个打印螺旋数的程序
- db2 参数标识符使用无效_在Python应用程序中使用配置的最佳实践
- Docker框架的使用系列教程(三)
- 【Python 必会技巧】利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
- java前端导入excel_Java之导入Excel Vue框架前端篇
- C# 图片转换为base64
- 按计算机应用领域来分 电子邮件属于,计算机考试题库和答案.doc
- 前端导出 xlsx文件
- 制作一个简单的时间表
- Error -27796: Failed to connect to server ip地址: [10060] Connection timed out
- linux网站权限恢复,RMAN异机恢复——备份集权限问题
- 如何使用CE来修改游戏并制作一个修改器
- 光猫,交换机和路由器的区别
- 华硕vm510l装固态硬盘_华硕VM510L拆机换固态硬盘
- 使用java计算数组方差和标准差
热门文章
- python实现语法分析器_python语法分析器
- 代码检测vc2013环境是否已经安装了
- linux安装vmd软件步骤,VMD软件使用指南.PDF
- 计算机用三角函数时如何用弧度制,5.1.2弧度制教学设计
- eds能谱图分析实例_SPC控制图公式_均值极差SPC控制图公式应用实例分析
- Smart3D中空三的设置
- 联想打印机测试软件,办公实用主义 联想LJ3800DW打印机测试
- python读取kml和kmz格式的google谷歌地球文件
- Oracle P6培训系列:09定义计划编制视图
- Altium Designer 入门教程