JAVA QRCodeWriter设置白边距和背景颜色等源码
时间: 2024-01-17 16:03:53 浏览: 77
要设置二维码的白边距和背景颜色,可以使用 zxing 库提供的 `EncodeHintType.MARGIN` 和 `EncodeHintType.BACKGROUND_COLOR` 参数。以下是一个示例代码:
```java
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
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 QRCodeGenerator {
public static void main(String[] args) {
String qrCodeData = "https://www.example.com"; // 二维码内容
String filePath = "qrcode.png"; // 二维码保存路径
int size = 300; // 二维码尺寸
String fileType = "png"; // 二维码文件类型
Map<EncodeHintType, Object> hints = new HashMap<>();
hints.put(EncodeHintType.MARGIN, 2); // 设置白边距(默认值为4)
hints.put(EncodeHintType.BACKGROUND_COLOR, Color.YELLOW); // 设置背景颜色
try {
QRCodeWriter qrCodeWriter = new QRCodeWriter();
BitMatrix bitMatrix = qrCodeWriter.encode(qrCodeData, BarcodeFormat.QR_CODE, size, size, hints);
BufferedImage qrCodeImage = new BufferedImage(size, size, BufferedImage.TYPE_INT_RGB);
qrCodeImage.createGraphics();
Graphics2D graphics = (Graphics2D) qrCodeImage.getGraphics();
graphics.setColor(Color.WHITE);
graphics.fillRect(0, 0, size, size);
graphics.setColor(Color.BLACK);
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
if (bitMatrix.get(i, j)) {
graphics.fillRect(i, j, 1, 1);
}
}
}
ImageIO.write(qrCodeImage, fileType, new File(filePath));
System.out.println("二维码生成成功!");
} catch (WriterException | IOException e) {
e.printStackTrace();
}
}
}
```
在这个示例中,我们创建了一个 `hints` 的 `HashMap` 对象来设置编码提示。使用 `EncodeHintType.MARGIN` 可以设置白边距的大小,值越大白边距越宽,默认为4。使用 `EncodeHintType.BACKGROUND_COLOR` 可以设置二维码的背景颜色。请注意,背景颜色必须是 `Color` 类型。
希望这个示例对您有所帮助!
阅读全文