Java生成二维码
来源:互联网 发布:科比2000年西决数据 编辑:程序博客网 时间:2024/05/22 09:49
java生成二维码
本文通过Java提供两种生成二维码以及解析二维码的方法
1.zxing
编码前准备:
- 下载zxing,下载后提取出core,javase中com文件夹下的文件自己打成jar包,供一会使用。zxing源码下载
- jdk版本:1.7及以上
import java.io.File;import java.nio.file.Path;import java.util.HashMap;import com.google.zxing.BarcodeFormat;import com.google.zxing.EncodeHintType;import com.google.zxing.MultiFormatWriter;import com.google.zxing.client.j2se.MatrixToImageWriter;import com.google.zxing.common.BitMatrix;import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;/** * 使用zxing生成二维码 * * @author suny */public class CreateQRcode { public static void main(String[] args) { // 定义二维码图片参数 int width = 300; int height = 300; String format = "jpg"; String content = "www.baidu.com"; // 定义二维码的参数 HashMap<EncodeHintType, Object> map = new HashMap<EncodeHintType, Object>(); // 定义二维码字符集 map.put(EncodeHintType.CHARACTER_SET, "utf-8"); // 纠错等级 map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M); // 边距 map.put(EncodeHintType.MARGIN, 2); /* * content:二维码内容 format:二维码类型 */ try { // 生成二维码 BitMatrix bitmatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, map); Path file = new File("E:/img.jpg").toPath(); MatrixToImageWriter.writeToPath(bitmatrix, format, file); } catch (Exception e) { e.printStackTrace(); } }}import java.awt.image.BufferedImage;import java.io.File;import java.util.HashMap;import javax.imageio.ImageIO;import com.google.zxing.BinaryBitmap;import com.google.zxing.EncodeHintType;import com.google.zxing.MultiFormatReader;import com.google.zxing.Result;import com.google.zxing.client.j2se.BufferedImageLuminanceSource;import com.google.zxing.common.HybridBinarizer;/** * 使用zxing解析二维码 * @author suny */public class ReadQRcode { public static void main(String[] args) { try { MultiFormatReader multiFormatReader = new MultiFormatReader(); File file = new File("E:/img.jpg"); // 读取文件识别成为一张图片 BufferedImage image = ImageIO.read(file); BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer( new BufferedImageLuminanceSource(image))); // 定义二维码的参数 HashMap map = new HashMap(); // 定义二维码字符集 map.put(EncodeHintType.CHARACTER_SET, "utf-8"); Result result = multiFormatReader.decode(binaryBitmap, map); System.out.println("解析结果:"+result.toString()); System.out.println("二维码格式:"+result.getBarcodeFormat()); System.out.println("二维码格式:"+result.getText()); } catch (Exception e) { e.printStackTrace(); } }}
2.qrcode
编码前准备:
1. 下载qrcode生成包。qrcode生成包
2. 下载qrcode读取包。qrcode读取包
3. jdk版本:1.7及以上
/* *created by2017年11月17日 */import java.awt.Color;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;import com.swetake.util.Qrcode;/** * 使用qrcode生成二维码 * * @author suny */public class CreateQRcode { public static void main(String[] args) throws IOException { Qrcode x = new Qrcode(); x.setQrcodeErrorCorrect('M');// 纠错等级 x.setQrcodeEncodeMode('B');// M代表数字;A代表a-Z;B代表任意字符 x.setQrcodeVersion(7);// 版本 String qrData = "www.baidu.com"; // 规定尺寸 int width = 67 + 12 * (7 - 1); int height = 67 + 12 * (7 - 1); // 创建一个缓冲区图片 BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // Java提供的画图工具 Graphics2D gs = bufferedImage.createGraphics(); gs.setBackground(Color.WHITE); gs.setColor(Color.BLACK); // 清除画板内容 gs.clearRect(0, 0, width, height); // 将文本转换成字节数 byte[] d = qrData.getBytes(); int pixoff = 2;// 偏移量 // 进行填充 if (d.length > 0 && d.length < 120) { boolean[][] s = x.calQrcode(d); for (int i = 0; i < s.length; i++) { for (int j = 0; j < s.length; j++) { if (s[j][i]) { gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3); } } } } gs.dispose(); bufferedImage.flush(); ImageIO.write(bufferedImage, "jpg", new File("E:/aa.jpg")); System.out.println("生成成功"); }}/* *created by2017年11月17日 */import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;import jp.sourceforge.qrcode.QRCodeDecoder;/** * 使用qrcode解析二维码 * @author sunyi */public class ReadQRcode { public static void main(String[] args) throws IOException { File file = new File("E:/aa.jpg"); // 读取文件识别成为一张图片 BufferedImage image = ImageIO.read(file); QRCodeDecoder codeDecoder = new QRCodeDecoder(); String rs = new String(codeDecoder.decode(new QRcodeImage_Test(image))); System.out.println(rs); }}/* *created by2017年11月17日 */import java.awt.image.BufferedImage;import jp.sourceforge.qrcode.data.QRCodeImage;/** * * @author suny */public class QRcodeImage_Test implements QRCodeImage { BufferedImage image; public QRcodeImage_Test(BufferedImage image) { this.image = image; } @Override public int getHeight() { return image.getHeight(); } @Override public int getPixel(int arg0, int arg1) { return image.getRGB(arg0, arg1); } @Override public int getWidth() { return image.getWidth(); }}
阅读全文
0 0
- java二维码 生成二维码
- Java生成二维码解析二维码
- java 生成二维码,解析二维码
- Java生成PDF417二维码
- Java 生成二维码
- java生成二维码
- java生成二维码
- java生成二维码
- JAVA 生成二维码 代码
- Java 生成二维码
- java 二维码生成
- java二维码生成
- JAVA生成解析二维码
- Java 生成二维码
- java 生成二维码
- java生成二维码
- Java生成二维码
- java生成二维码图片
- 13.2、异常处理——ResponseStatusExceptionResolver和@ResponseStatus
- maven加载jar包
- 10. Override和Overload的含义与区别。
- Freemarker 模板的语法实例
- 科学研究设计三:抽样
- Java生成二维码
- 颜值即正义,Linux 桌面个性化工具推荐
- Akka中的单元测试
- Oracle基础知识4 : 单表查询3
- 数据结构-栈和队列
- 第一章课后习题
- 语音识别关键技术公开,人机交互这么做就对了!
- 轻松定位硬件故障方法-日志分析
- NTSC和PAL的区别