网站首页 > java教程 正文
闲来无事,搞个二维码玩玩(生成的二维码不让往头条里放)
用的是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("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(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二维码开发(二维码java代码)
- 下一篇: QRCode二维码生成(qrcode 生成)
猜你喜欢
- 2024-09-27 运维干货来啦:Jenkins+gradlew自动构建android项目提供下载链接和二维码下载
- 2024-09-27 基于 Spring Boot 和 WxJava 实现网站接入微信扫码登录
- 2024-09-27 基于token的多平台身份认证架构设计
- 2024-09-27 在线二维码生成器有哪些?微信二维码转换成链接如何实现?
- 2024-09-27 扫二维码提货系统自己建,系统搭建与操作指南分享
- 2024-09-27 PDF文件添加二维码水印(pdf二维码怎么弄出来扫码)
- 2024-09-27 掏出手机,扫一扫,即刻登录——SpringBoot实现二维码扫码登录
- 2024-09-27 短连接生成器有哪些?制作二维码生成器有哪些?
- 2024-09-27 慕课网Java相关课程学习项目源码,以及源码地址
- 2024-09-27 二维码扫描优化(微信二维码优化)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)