1、生成二维码
//加密:文字信息 -> 二维码
public static void encoderQRCode(String content, String imgPath, String imgType, int size) throws Exception{
//RenderedImage是一个接口,因此要找到它的实现类 BufferedImage
//RenderedImage bufferedImage = null;
//代表内存中的一张图片
BufferedImage bufferedImage = generateQRCodeCommon(content, imgType, size);
//设置图片格式,与输出的路径
ImageIO.write(bufferedImage, “jpg”, new File(“H:/qrcode.jpg”));
}
//产生一个二维码的BufferedImage
private static BufferedImage generateQRCodeCommon(String content, String imgType, int size) throws Exception{
//QRCode对象:字符串转为boolean[][]
Qrcode qrcode = new Qrcode();
//设置二维码的排错率
/**
-
纠错等级分为
-
level L : 最大 7% 的错误能够被纠正;
-
level M : 最大 15% 的错误能够被纠正;
-
level Q : 最大 25% 的错误能够被纠正;
-
level H : 最大 30% 的错误能够被纠正;
*/
qrcode.setQrcodeErrorCorrect(‘M’);
qrcode.setQrcodeEncodeMode(‘B’);//注意版本信息 N代表数字 、A代表 a-z,A-Z、B代表 其他)
qrcode.setQrcodeVersion(size);//尺寸 1-40
boolean[][] codeOuts = qrcode.calQrcode(content.getBytes(“gbk”));
int imgSize = 67 + 12 * (size - 1);
BufferedImage bufferedImage = new BufferedImage(imgSize, imgSize, BufferedImage.TYPE_INT_RGB);
//生成一个画板
Graphics2D graphics = bufferedImage.createGraphics();
graphics.setBackground(Color.WHITE);//将画板的背景色设置为白色
graphics.clearRect(0, 0, imgSize, imgSize);//初始化
graphics.setColor(Color.BLACK);//设置画板上图像的颜色
int pixoff = 2;
for(int j = 0;j<codeOuts.length;j++){
for(int i = 0;i<codeOuts.length;i++){
if (codeOuts[j][i]) {
graphics.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3);
}
}
}
//增加logo
Image logo = ImageIO.read(new File(“H:\CSDN\哪吒.jpg”));
int maxWidth = bufferedImage.getWidth();
int maxHeight = bufferedImage.getHeight();
graphics.drawImage(logo, imgSize/52, imgSize/52, maxWidth/5, maxHeight/5, null);
graphics.dispose();//释放空间
bufferedImage.flush();//清理
return bufferedImage;
}
注:敲代码最重要的是思路,由ImageIO.write(bufferedImage, “jpg”, new File(“H:/qrcode.jpg”));入手,依次构建参数,因为RenderedImage是一个接口,因此要找到它的实现类 BufferedImage,
2、解析二维码
//解密
public static String decoderQRCode(String imgPath) throws IOException {
//硬盘中图片加载入内存
BufferedImage bufferedImage = ImageIO.read(new File(imgPath));
//解密
QRCodeDecoder qrCodeDecoder = new QRCodeDecoder();
QRCodeImage qrCodeImage = new QRCodeImageImpl(bufferedImage);
byte[] decode = qrCodeDecoder.decode(qrCodeImage);
return new String(decode, “gbk”);
}
package com.guor.qrcode;
import jp.sourceforge.qrcode.data.QRCodeImage;
import java.awt.image.BufferedImage;
public class QRCodeImageImpl implements QRCodeImage {
BufferedImage bufferedImage;//内存中的二维码
public QRCodeImageImpl(BufferedImage bufferedImage){
this.bufferedImage = bufferedImage;
}
@Override
public int getWidth() {
return bufferedImage.getHeight();
}
@Override
public int getHeight() {
return bufferedImage.getHeight();
}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://img-blog.csdnimg.cn/img_convert/95453edf89218e3744adf76556c59bc7.jpeg)
最后
毕竟工作也这么久了 ,除了途虎一轮,也七七八八面试了不少大厂,像阿里、饿了么、美团、滴滴这些面试过程就不一一写在这篇文章上了。我会整理一份详细的面试过程及大家想知道的一些问题细节
美团面试经验
字节面试经验
菜鸟面试经验
蚂蚁金服面试经验
唯品会面试经验
因篇幅有限,图文无法详细发出
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!
R-1712133583450)]
蚂蚁金服面试经验
[外链图片转存中…(img-mNOjd4ya-1712133583450)]
唯品会面试经验
[外链图片转存中…(img-bqPWVAB2-1712133583450)]
因篇幅有限,图文无法详细发出
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!