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/5*2, imgSize/5*2, 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");
}
![](https://www.www.zyiz.net/i/ll/?i=20210312215500904.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d1b3J1aV9qYXZh,size_16,color_FFFFFF,t_70)
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(); } //像素 @Override public int getPixel(int x, int y) { return bufferedImage.getRGB(x, y); }
}
### 3、测试类
package com.guor.qrcode;
public class QrcodeTest {
public static void main(String[] args) throws Exception { String content = "https://blog.csdn.net/guorui_java/article/details/112391105";//内容信息 String path = "H:/qrcode.jpg"; //加密:文字信息 -> 二维码 QRCodeUtil.encoderQRCode(content, path, "png", 20); //解密 String decoderQRCode = QRCodeUtil.decoderQRCode(path); System.out.println(decoderQRCode); }
}
### 4、生成的二维码 ![](https://www.www.zyiz.net/i/ll/?i=20210312215635630.jpg) 一扫出神奇,还真的跳转到了我的[Java知识体系总结(2021版)]( )博客 解析的文字: ![](https://www.www.zyiz.net/i/ll/?i=20210312215715724.png) ### 最后 **对于很多Java工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。** **整理的这些资料希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。** **再分享一波我的Java面试真题+视频学习详解+技能进阶书籍** **[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](https://codechina.csdn.net/m0_60958482/java-p7)** **整理的这些资料希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。** **再分享一波我的Java面试真题+视频学习详解+技能进阶书籍** **[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](https://codechina.csdn.net/m0_60958482/java-p7)** ![美团二面惜败,我的凉经复盘(附学习笔记+面试整理+进阶书籍)](https://www.www.zyiz.net/i/ll/?i=img_convert/6ef36db3dcf746d33f217367af5f9a5a.png)