在一个图片上画一个二维码

复制代码
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;

public class QRCodePainter {
    public static void main(String[] args) {
        String backgroundImageFile = "background.jpg";
        String qrCodeContent = "Hello, World!";

        try {
            // 加载背景图片
            BufferedImage image = ImageIO.read(new File(backgroundImageFile));

            // 创建二维码
            QRCodeWriter qrCodeWriter = new QRCodeWriter();
            BitMatrix bitMatrix = qrCodeWriter.encode(qrCodeContent, BarcodeFormat.QR_CODE, 200, 200);

            // 绘制二维码到图片中心
            int xPos = (image.getWidth() - bitMatrix.getWidth()) / 2;
            int yPos = (image.getHeight() - bitMatrix.getHeight()) / 2;
            for (int x = 0; x < bitMatrix.getWidth(); x++) {
                for (int y = 0; y < bitMatrix.getHeight(); y++) {
                    image.setRGB(xPos + x, yPos + y, bitMatrix.get(x, y) ? Color.BLACK.getRGB() : Color.WHITE.getRGB());
                }
            }

            // 保存带有二维码的新图片
            String outputFile = "output.jpg";
            ImageIO.write(image, "jpg", new File(outputFile));

            System.out.println("成功生成带有二维码的图片:" + outputFile);
        } catch (IOException | WriterException e) {
            e.printStackTrace();
        }
    }
}
复制代码

 

posted @   wujf  阅读(132)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示