java利用QRCode生成不带图片的二维码(颜色为非黑色)

来源:互联网 发布:麒麟655支持5g网络 编辑:程序博客网 时间:2024/04/29 23:56

一:参考上一篇文章

http://blog.csdn.net/m0_37934074/article/details/77935749

二:代码稍微有所改动

package com.test;


import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import com.swetake.util.Qrcode;


public class ErWeiMa {
public Boolean createQRCode(String content, String imgPath) {
try {
Qrcode qrcodeHandler = new Qrcode();
qrcodeHandler.setQrcodeErrorCorrect('M');// 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小
qrcodeHandler.setQrcodeEncodeMode('B');// N代表数字,A代表字符a-Z,B代表其他字符
qrcodeHandler.setQrcodeVersion(9);// 设置设置二维码版本,取值范围1-40,值越大尺寸越大,可存储的信息越大
byte[] contentBytes = content.getBytes("utf-8");// 设置编码格式为UTF-8
BufferedImage bufImg = new BufferedImage(168, 168, BufferedImage.TYPE_INT_RGB);
Graphics2D gs = bufImg.createGraphics();
gs.setBackground(Color.white); // 设置背景色为白色
gs.clearRect(0, 0, 168, 168);
gs.setColor(Color.green); // 设定图像颜色 为绿色
int pixoff = 2; // 设置偏移量 不设置可能导致解析出错
// 输出内容 > 二维码
if (contentBytes.length > 0 && contentBytes.length < 150) {
boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);
for (int i = 0; i < codeOut.length; i++) {
for (int j = 0; j < codeOut.length; j++) {
if (codeOut[j][i]) {
gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3);
}
}
}
} else {
return false;
}
gs.dispose();
bufImg.flush();
File imgFile = new File(imgPath);
ImageIO.write(bufImg, "png", imgFile);


} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}


public static void main(String[] args) {
String imgPath = "C:/Users/yjs/Desktop/new.png";// 最后生成的图片地址
String content = "胡姐姐的博客,永远敞着门!";
ErWeiMa er = new ErWeiMa();
boolean boo = er.createQRCode(content, imgPath);
System.out.println(">>>>>>>" + boo);
System.out.println(imgPath);
}


}

三:生成图片结果


原创粉丝点击