java生成二维码带logo,这几个方法很好用!

发布日期:2025-05-04 02:06浏览次数:

今儿个,咱来聊聊怎么用Java整出个带logo的二维码。这玩意儿现在到处都是,扫一扫就能进个网站、加个好友啥的,挺方便。前两天我不是接个小活儿嘛客户就想要个带自家logo的二维码,我就琢磨着把这过程记下来,以后再碰上类似的事儿,也好有个参考。

准备家伙事儿

要说这Java生成二维码,也不是啥难事,但咱也不能空手上阵,得先准备好工具。我这回用的是谷歌的ZXing库,听说这玩意儿挺好使,功能也全。你也可以用别的库,看个人喜

咱得把ZXing库给弄进来。我用的是Maven来管理项目,所以在*文件里加这么几行:

<dependency>

<groupId>*</groupId>

<artifactId>core</artifactId>

<version>3.5.1</version>

</dependency>

<dependency>

<groupId>*</groupId>

<artifactId>javase</artifactId>

<version>3.5.1</version>

</dependency>

版本号这里我用3.5.1版本,你们到时候用最新的就行,问题不大。

然后我这边还用个叫做Hutool的工具类来着,不是必要的,但是为方便我操作文件啥的。

<dependency>

<groupId>*</groupId>

<artifactId>hutool-all</artifactId>

<version>5.8.20</version>

</dependency>

把这几行往*里一粘,Maven就会自动把需要的jar包下载下来,省事儿不少。要是你不用Maven,那就得手动下载jar包,然后添加到项目里,稍微麻烦点。

开工干活

家伙事儿准备好,咱就开干!先创建一个Java类,名字就叫QRCodeUtil,听着就专业。然后,咱在里面写个方法,用来生成二维码:


package *;

import *.BarcodeFormat;

import *.EncodeHintType;

import *.MultiFormatWriter;

import *.*;

import *.*;

import *;

import *.;

import *.BufferedImage;

import *;

import *;

import *;

import *;

public class QRCodeUtil {

private static final int BLACK = 0xFF000000;

private static final int WHITE = 0xFFFFFFFF;

public static void createQRCode(String content, String logoPath, String destPath, int width, int height) throws Exception {

// 设置二维码参数

Map<EncodeHintType, Object> hints = new HashMap<>();

*(*_CORRECTION, ErrorCorrectionLevel.H); // 纠错等级,H最高

*(*_SET, "UTF-8"); // 字符编码

*(*, 1); // 边距

// 生成二维码矩阵

BitMatrix bitMatrix = new MultiFormatWriter().encode(content, *_CODE, width, height, hints);

// 创建图片

BufferedImage image = toBufferedImage(bitMatrix);

// 添加logo

if (logoPath != null && !*()) {

addLogo(image, logoPath);

// 保存图片

File file = new File(destPath);

*(image, "png", file);

private static BufferedImage toBufferedImage(BitMatrix matrix) {

int width = *();

int height = *();

BufferedImage image = new BufferedImage(width, height, *_INT_RGB);

for (int x = 0; x < width; x++) {

for (int y = 0; y < height; y++) {

*(x, y, *(x, y) ? BLACK : WHITE);

return image;

private static void addLogo(BufferedImage image, String logoPath) throws IOException {

// 读取logo图片

File logoFile = new File(logoPath);

Image logoImage = *(logoFile);

// 计算logo位置

int logoWidth = *(null);

int logoHeight = *(null);

int imageWidth = *();

int imageHeight = *();

int x = (imageWidth - logoWidth) / 2;

int y = (imageHeight - logoHeight) / 2;

// 绘制logo

Graphics2D graphics = *();

*(logoImage, x, y, null);

public static void main(String[] args) throws Exception {

createQRCode("*", "D:/*", "D:/*", 300, 300);

代码写起来很快,因为逻辑很简单,就是调用几个方法。代码里我也写注释,你们简单看一下。

这代码看着有点长,大部分都是固定的格式,咱主要关注几个地方:

  • content:这是二维码的内容,你想放啥都行,网址、文本、电话号码啥的。
  • logoPath:这是logo图片的路径,可以是本地路径,也可以是网络路径。
  • destPath:这是生成的二维码图片的保存路径。
  • widthheight:这是二维码图片的宽度和高度,单位是像素。

我这里测试就随便放个百度的连接,然后logo图片我放到D盘,二维码生成后也放到D盘

见证奇迹

代码写完,咱就运行一下,看看效果。我是在main方法里调用的createQRCode方法,运行之后,D盘就多一个*的图片,打开一看,果然是个带logo的二维码!用手机扫一扫,也能正常跳转到百度首页,大功告成!

用Java生成带logo的二维码并不难,关键是要找对工具,理清思路。我这回用的ZXing库就挺好使,几行代码就搞定。这只是个简单的例子,还有很多可以优化的地方,比如可以把二维码参数放到配置文件里,可以自定义logo的大小和位置等等。不过这些都是后话,咱先把最基本的功能实现再说。

今儿个就分享到这儿,希望对大家有所帮助。要是大家有啥问题,或者有更好的方法,欢迎留言交流!

泰州私家侦探 扬州侦探 湖州侦探公司 嘉兴私家侦探 温州侦探公司
如果您有什么问题,欢迎咨询技术员 点击QQ咨询