您的位置 首页 java

JAVA Qrcode实现带有logo的二维码(源码)

闲来无事,搞个二维码玩玩(生成的二维码不让往头条里放)

用的是 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(“二维码完成”);

}

}

新手上路多多关注,持续更新。

分享一些工作中遇到的问题都会记录下来,和一些好的资源都会分享给大家。

希望多多支持小编。

文章来源:智云一二三科技

文章标题:JAVA Qrcode实现带有logo的二维码(源码)

文章地址:https://www.zhihuclub.com/185449.shtml

关于作者: 智云科技

热门文章

网站地图