在之前一篇文章,详细介绍了利用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相关推荐

  1. Java zxing生成vcard二维码名片

    一)背景 最近想做个vcard个人名片的二维码,从网上查了相关在线生成二维码功能,也能实现功能.但自己因为想用java的方式来实现,网上最多的案例都是依赖zxing jar实现,但由于要生成统一的vc ...

  2. zxing 生成 Qrcode (二维码)

    Zxing生成Qrcode 工具类 1.引入依赖 <dependency><groupId>com.google.zxing</groupId><artifa ...

  3. JAVA C# Zxing生成的二维码数据转换为1bit的bmp下发到点阵终端。QRCode去白边,以bmp格式字节流发送,BMP图片解析

    BMP图像文件完全解析 - 知乎 注意: 小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中.越向后地址越高,比如00  01  02,02的地址是2,是高. BMP文 ...

  4. Zxing生成自定义二维码样式

    Zxing生成自定义二维码样式 现在几乎每个app都带有二维码,但是google提供的zxing包,只给我们提供了核心的二维码算法,而开发过程中经常有自定义二维码的样式的需求,这时候我们就要自己写工具 ...

  5. 【python 生成自己的二维码】推广二维码带log图片

    如何安装?用pip安装 pip install qrcode pip install pillow # encoding: utf-8import sys reload(sys) sys.setdef ...

  6. qrcode将生成的二维码转成图片格式

    微信里打开页面时需要长按识别二维码,所以需要转下图片 <div id="qrcode"></div> <img id="img"/ ...

  7. Python生成动态二维码,又掌握了一个小技巧

    有点无聊,用Python来生成一个动态二维码吧,只需要几行代码~ 模块相关 我们要用到的是,MyQR这个库, 当然,最直接的方式,就是pip install pip install MyQR 参数讲解 ...

  8. JAVA实现生成原生二维码并上传至阿里云

    JAVA生成二维码并上传至阿里云 pom依赖 <dependency><groupId>com.google.zxing</groupId><artifact ...

  9. 将qrcode生成的二维码转成图片

    将页面上原来canvas格式的二维码隐藏,新建一个div用于存放生成的img标签 <div class="canvasCode" id ="query" ...

  10. vue 中使用 QRCode.js 链接转二维码带中间图片

    前言 项目中需要一个链接转二维码的功能,找了一下 决定使用QRCode.js(很久以前的插件了) 下载引入1. <div id="qrcode" ref="qrco ...

最新文章

  1. Chain of Responsibility 责任链模式 MD
  2. idea中 maven打包时时报错User setting file does not exist C:\Users\lenevo\.m2\setting.xml,
  3. python调用shell命令-Python调用shell命令常用方法(4种)
  4. 聊聊ajax,聊聊Ajax()中data()基本知识以及实例分析
  5. tensorflow 按维度相加_人工智能 TensorFlow 必知必会编程概念整理
  6. 一个打印螺旋数的程序
  7. db2 参数标识符使用无效_在Python应用程序中使用配置的最佳实践
  8. Docker框架的使用系列教程(三)
  9. 【Python 必会技巧】利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
  10. java前端导入excel_Java之导入Excel Vue框架前端篇
  11. C# 图片转换为base64
  12. 按计算机应用领域来分 电子邮件属于,计算机考试题库和答案.doc
  13. 前端导出 xlsx文件
  14. 制作一个简单的时间表
  15. Error -27796: Failed to connect to server ip地址: [10060] Connection timed out
  16. linux网站权限恢复,RMAN异机恢复——备份集权限问题
  17. 如何使用CE来修改游戏并制作一个修改器
  18. 光猫,交换机和路由器的区别
  19. 华硕vm510l装固态硬盘_华硕VM510L拆机换固态硬盘
  20. 使用java计算数组方差和标准差

热门文章

  1. python实现语法分析器_python语法分析器
  2. 代码检测vc2013环境是否已经安装了
  3. linux安装vmd软件步骤,VMD软件使用指南.PDF
  4. 计算机用三角函数时如何用弧度制,5.1.2弧度制教学设计
  5. eds能谱图分析实例_SPC控制图公式_均值极差SPC控制图公式应用实例分析
  6. Smart3D中空三的设置
  7. 联想打印机测试软件,办公实用主义 联想LJ3800DW打印机测试
  8. python读取kml和kmz格式的google谷歌地球文件
  9. Oracle P6培训系列:09定义计划编制视图
  10. Altium Designer 入门教程