当前位置: 首页 > news >正文

Java二维码

二维码工具

  • ZXing (Zebra Crossing):Google 出品,经典老牌,稳定可靠。
  • QrCode (来自 com.google.zxing.qrcode):轻量级,适合快速开发。
  • QRCodeUtils (封装工具类):自己撸一点封装,方便复用。

1. 引入 Maven 依赖

  com.google.zxing
core
3.5.2


com.google.zxing
javase
3.5.2
2. 封装一个二维码工具类
package com.moyu.qr;

import com.google.zxing.*;
import com.google.zxing.client.j2se.MatrixToImageConfig;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.util.HashMap;
import java.util.Map;

/**
 * 天天摸鱼的 Java 工程师出品
 * 通用二维码生成工具类
 */
publicclass QrCodeUtils {

    /**
     * 生成普通二维码并保存为图片文件
     *
     * @param content  二维码内容
     * @param filePath 保存路径(绝对路径)
     * @param width    宽度
     * @param height   高度
     * @throws Exception
     */
    public static void generateSimpleQrCode(String content, String filePath, int width, int height) throws Exception {
        // 编码参数设置
        Map hints = new HashMap<>();
        hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); // 编码类型
        hints.put(EncodeHintType.MARGIN, 1);              // 边距

        BitMatrix bitMatrix = new MultiFormatWriter().encode(
                content,
                BarcodeFormat.QR_CODE,
                width,
                height,
                hints
        );

        Path path = new File(filePath).toPath();
        MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path);
    }

    /**
     * 生成带 Logo 的二维码
     *
     * @param content   二维码内容
     * @param logoPath  logo 图片路径
     * @param outputPath 输出二维码路径
     */
    public static void generateQrCodeWithLogo(String content, String logoPath, String outputPath) throws Exception {
        int width = 300;
        int height = 300;

        Map hints = new HashMap<>();
        hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
        hints.put(EncodeHintType.MARGIN, 1);
        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); // 容错率高,避免 logo 遮挡

        BitMatrix bitMatrix = new MultiFormatWriter().encode(
                content, BarcodeFormat.QR_CODE, width, height, hints
        );

        // 生成二维码图像
        BufferedImage qrImage = MatrixToImageWriter.toBufferedImage(bitMatrix, new MatrixToImageConfig());

        // 加载 logo 图片
        BufferedImage logo = ImageIO.read(new File(logoPath));

        int logoWidth = qrImage.getWidth() / 5;
        int logoHeight = qrImage.getHeight() / 5;

        // 计算 logo 放置位置(居中)
        int x = (qrImage.getWidth() - logoWidth) / 2;
        int y = (qrImage.getHeight() - logoHeight) / 2;

        // 合并图片
        Graphics2D g = qrImage.createGraphics();
        g.drawImage(logo, x, y, logoWidth, logoHeight, null);
        g.dispose();

        ImageIO.write(qrImage, "PNG", new File(outputPath));
    }
}



3. 实战调用:生成一个带参数的推广码

public class Main {
    public static void main(String[] args) throws Exception {
        String content = "https://yourdomain.com/register?ref=userid_123456";
        String savePath = "D:/qrcode/promo.png";

        QrCodeUtils.generateSimpleQrCode(content, savePath, 300, 300);
        System.out.println("推广二维码生成成功,快去扫码看看!");
    }
}

4.  带 Logo 的品牌码

public class LogoDemo {
    public static void main(String[] args) throws Exception {
        String content = "https://yourapp.com/share?id=abc123";
        String logo = "D:/logo/logo.png";
        String output = "D:/qrcode/share_with_logo.png";

        QrCodeUtils.generateQrCodeWithLogo(content, logo, output);
        System.out.println("带 Logo 的二维码已生成!");
    }
}
 
http://www.jsqmd.com/news/453184/

相关文章:

  • 2026武汉公装装修实力推荐:武汉信为装饰工程有限公司,厂房/店铺/餐饮/写字楼全系公装解决方案 - 品牌推荐官
  • 2026东莞深圳自动售货机TOP6口碑推荐|莞深无人无人售货机厂家优选推荐 - 品牌智鉴榜
  • 2026年3月郑州喷码机/激光喷码机/打标机/贴标机/生产日期喷码机厂家哪家好 - 2026年企业推荐榜
  • 2026年 南通开发区猫科诊疗机构推荐榜:专业宠物医院与特色治疗服务深度解析 - 品牌企业推荐师(官方)
  • 详细介绍:第十四课:Redis 在后端到底扮演什么角色?——缓存模型全景图
  • 记一次 .NET 某低代码开发框架 内存暴涨分析
  • kde nero启动后提示检测到设置了 GTK_IM_MODULE 和 QT_IM_MODULE
  • 2026年湖南专业家装公司价格大揭秘,旧房翻新费用多少钱 - 工业品网
  • 聊聊2026年预制直埋保温管性价比高的供应商排名,集中供热必备 - 工业设备
  • 2026年广州口碑不错的360航空软包汽车脚垫供应商,哪家值得选 - 工业品牌热点
  • 2026年 南通崇川区异宠医院推荐榜:环境优越、专业诊疗与暖心服务的口碑之选 - 品牌企业推荐师(官方)
  • 聊聊福安客厅沙发优质供应商,哪家品牌值得推荐? - mypinpai
  • 总结2026年厦门高压发电机出租排名前十的公司 - 工业品网
  • 2026年松筒线生产厂推荐,靠谱的品牌有哪些? - myqiye
  • 2026年高强缝纫线耐磨厂家哪家性价比高,中祥线业实力揭秘 - 工业推荐榜
  • 2026年聊聊全国靠谱的螺杆泵认证厂家,螺杆泵性价比哪家高 - 工业品牌热点
  • 研发测试质量规范(草稿)
  • 2026年泉州性价比高的仿古砖龙头制造商排名,好用品牌大盘点 - mypinpai
  • 中电金信:规范与灵活兼得,让数据模型更“好用”
  • 2026年松筒线制造企业十大排名,松筒线来样定制服务靠谱吗 - myqiye
  • 2026年靠谱的垃圾桶源头厂家有哪些,专业的垃圾桶公司费用多少 - 工业推荐榜
  • 保温管制造企业怎么选,河北宝温管道性价比值得考虑吗 - 工业设备
  • 聊聊杭州地区靠谱的保温管专业制造商,费用怎么收取? - 工业设备
  • 2026年全国小型电动环卫车哪家靠谱?技术成熟 专业服务适配各类需求 - 深度智识库
  • 2026年分析理发器厂商,广州艾渼为何口碑这么好 - 工业品网
  • 2026年评价高的市政护栏厂家推荐:防撞护栏公司口碑推荐 - 行业平台推荐
  • 2026年评价高的护栏厂家推荐:桥梁护栏/临时护栏厂家选择指南 - 行业平台推荐
  • 信息系统项目管理师-归纳
  • AI元人文:空论——指月之间
  • 2026年质量好的阳台护栏工厂推荐:道路护栏/波形护栏源头厂家推荐 - 行业平台推荐