闲来无事,搞个二维码玩玩(生成的二维码不让往头条里放)
用的是 qrcode _swetake.jar包(可以从网上下载,也可以私信我)
源码(直接拷走,导入jar就可以了,感兴趣的可以试试):
package an.common;
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(“#mid=1571462165285889”,”D:/qrcode. png “,”G:/qrlogo.png”);
}
/**
* 制作二维码(喜欢的话右上角关注)
* @param content 扫描二维码将要跳转的地址
* @param imgPath 生产二位码的地址和名称
* @param logoPath 二维码中间的那个图片地址
* @throws IOException
*/
public static void getorcodeImg(String con tent,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(j*3+2, i*3+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(“二维码完成”);
}
}
新手上路多多关注,持续更新。
分享一些工作中遇到的问题都会记录下来,和一些好的资源都会分享给大家。
希望多多支持小编。