QRext4j一个简单易用的二维码生成器,可以自定义二维码颜色和码眼的样式。
JDK_1.8及以上,由于此生成器引用了部分JDK_1.8的特性, 如需兼容JDK_1.7,可以通过修改少许代码实现。
项目地址:https://gitee.com/iherus/qrext4j
Maven坐标(最好是把代码DOWN下来加进来看,方便学习):
<dependency>
<groupId>org.iherus</groupId>
<artifactId>qrext4j</artifactId>
<version>1.3.1</version>
</dependency>
使用示例:
import org.iherus.codegen.Codectx.LogoShape;
import org.iherus.codegen.qrcode.QrcodeConfig;
import org.iherus.codegen.qrcode.QreyesFormat;
import org.iherus.codegen.qrcode.SimpleQrcodeGenerator;
public class Qrext4jTest {
public static void main(String[] args) throws Exception {
String content = "http://www.javacui.com/m"; // 二维码内容
String logoPath = "D:\\logo.jpg"; // 本地 Logo
String logoHttp = "http://www.javacui.com/content/uploadfile/201906/thum-63181561697617.jpg"; // 在线logo
String destPath = "D:\\Qrext4jTest.png"; // 二维码输出地址
// writeToStream
// OutputStream out = null;
// try {
// out = new FileOutputStream(destPath);
// new SimpleQrcodeGenerator().generate(content).toStream(out);
// } finally {
// IOUtils.closeQuietly(out);
// }
// 在线 Logo
// new SimpleQrcodeGenerator().setRemoteLogo(logoHttp).generate(content).toFile(destPath);
// 自定义码眼样式
QrcodeConfig config = new QrcodeConfig(200, 200)
.setBorderSize(2) // 外层虚线Border
.setPadding(10) // 二维码离虚线的填充空白
.setMasterColor("#006400") // 二维码颜色
.setLogoBorderColor("#DB7093") // LOGO边框颜色
.setLogoShape(LogoShape.CIRCLE) // 圆形logo
.setCodeEyesPointColor("#1E90FF") // 三个对焦方框为眼眶样式,中间填充点的颜色
.setCodeEyesFormat(QreyesFormat.DR2_BORDER_R_POINT);// 三个对焦方框为眼眶样式,中间填充点的样式
new SimpleQrcodeGenerator(config).setLogo(logoPath).generate(content).toFile(destPath);
}
}
生成文件如下:

那么借这个工具类来试下,如果包含的内容太多时,会怎么样?
改下内容,汉字占用空间是最大的,这时,二维码倒是可以生成,但是扫不出来
String content = "http://www.javacui.com/m毛泽东在延安抗日战争研究会上作《论持久战》讲演。讲演全面分析了中日战争所处的时代和中日双方的基本特点,"
+ "阐述了中国抗日战争的持久战总方针,批驳了亡国论和速胜论,回答了困扰人们思想的种种问题,在国内外产生重大影响。" +
"讲演分析中日战争所处的时代和中日双方的基本特点,指出:总起来说,日本的长处是其战争力量之强,而其短处则在其战争本质的退步性、野蛮性,在其人力、"
+ "物力之不足,在其国际形势之寡助。中国的短处是战争力量之弱,而其长处则在其战争本质的进步性和正义性,在其是一个大国家,在其国际形势之多助。"
+ "这些特点,规定了和规定着双方一切政治上的政策和军事上的战略战术,规定了和规定着战争的持久性和最后胜利属于中国而不属于日本。"; // 二维码内容
生成的二维码文件是这样的,扫不出来,扫出来也是不对的

如果想要能被识别,那就必须增加二维码图片的高度和宽度
QrcodeConfig config = new QrcodeConfig(500, 500)
再次生成的二维码文件是这样的

这时二维码是可以扫出来的

这里只是提一下,一般不会在二维码里面放置这么多的内容。
END