前几天突然有个新的想法,给某个程序员送礼物的想法,程序员的浪漫(误)。所以特地去学了一下二维码生成相关知识,还买了个域名。生成二维码的方式有好几种,这次用的是zxing来生成的。
很简单,接下来就放一下代码。有关二维码相关原理看了一下这位大佬的文章:https://coolshell.cn/articles/10590.html
ZXing的github地址放在这里,下载下来再弄成jar包就可以用了:https://github.com/zxing/
package lib; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics2D; import java.awt.geom.RoundRectangle2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.nio.file.Path; import java.util.HashMap; import javax.imageio.ImageIO; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; public class createqrcode { public static void main(String[] args) throws IOException { int width = 300; int height = 300; String format = "png"; //生成二维码的格式 String contents = "https://www.cnblogs.com/cy708/"; //二维码内容,可以是文字、链接等等 HashMap hints = new HashMap(); //存放二维码的参数 hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M); //二维码纠错等级,详情见二维码原理链接 hints.put(EncodeHintType.MARGIN, 2); Path path = new File("D:/eclipse/qrcode/blogCode.png").toPath(); //生成二维码的存放路径 createCode(width,height,format,contents,hints,path); } public static void createCode(int width,int height,String format,String contents,HashMap hints,Path path) { try { BitMatrix bitMatrix = new MultiFormatWriter().encode(contents, BarcodeFormat.QR_CODE, width, height,hints); MatrixToImageWriter.writeToPath(bitMatrix, format, path); } catch (Exception e) { e.printStackTrace(); } } }
以上代码有一些包其实应该是多余的,因为还有一个在二维码中间插入logo的函数,主要用了Graphics2D类。但是之前没了解过这个类,生成的二维码中间的logo是黑白的,暂时还没找出原因。以后弄好了再更。生成的二维码如下: