import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.swetake.util.Qrcode;
public class QrcodeUtil {
public static void main(String[] args) throws IOException {
//调用天生二维码的方法
getorcodeImg(\"大众https://www.toutiao.com/c/user/16038770057/#mid=1571462165285889\"大众,\"大众D:/qrcode.png\"大众,\公众G:/qrlogo.png\公众);
}
/
制作二维码(喜好的话右上角关注)
@param content 扫描二维码将要跳转的地址
@param imgPath 生产二位码的地址和名称
@param logoPath 二维码中间的那个图片地址
@throws IOException
/
public static void getorcodeImg(String content,String imgPath,String logoPath) throws IOException {
Qrcode qr = new Qrcode();
//vs是版本号
int vs =20;
//API文档规定打算二维码图片宽高的办法
int width = 67 + 12 (vs - 1);
int height = 67 + 12 (vs - 1);
/
纠错等级分为
level L : 最大 7% 的缺点能够被纠正;
level M : 最大 15% 的缺点能够被纠正;
level Q : 最大 25% 的缺点能够被纠正;
level H : 最大 30% 的缺点能够被纠正;
/
qr.setQrcodeErrorCorrect('L');
//设置编码格式
qr.setQrcodeEncodeMode('B');
//设置版本号 1-40
qr.setQrcodeVersion(vs);
//汉字转格式须要抛出非常
byte[] con = content.getBytes(\"大众utf-8\"大众);
//缓冲区(面板)
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);
//绘图(画笔)
Graphics2D gs = bufferedImage.createGraphics();
//设置背景色
gs.setBackground(Color.WHITE);
//设置绘制内容的颜色
gs.setColor(Color.BLACK);
//设置二维码绘制区域
gs.clearRect(0, 0, width, height);
//是否会引起字符串长度大于120导致天生代码不实行,二维码空缺
if (con.length > 0 && con.length < 120) {
boolean[][] qrc = qr.calQrcode(con);
for (int i = 0; i < qrc.length; i++) {
for (int j = 0; j < qrc.length; j++) {
if (qrc[j][i]) {
gs.fillRect(j3+2, i3+2, 3, 3);
}
}
}
}
//添加水印图片(logo)
File logoFile=new File(logoPath);
Image srcimage=ImageIO.read(logoFile);
//logo的宽高
int lgWidth=srcimage.getWidth(null);
int lgHeight=srcimage.getHeight(null);
gs.drawImage(srcimage, (width-lgWidth)/2, (height-lgHeight)/2, lgWidth, lgHeight,null);
gs.dispose();
bufferedImage.flush();
//设置图片格式,与输出的路径
ImageIO.write(bufferedImage, \公众png\"大众, new File(imgPath));
System.out.println(\公众二维码完成\"大众);
}
}
新手上路多多关注,持续更新。分享一些事情中碰着的问题都会记录下来,和一些好的资源都会分享给大家。希望多多支持小编。