二维码
生成和解析使用zxing,下载链接 https://pan.baidu.com/s/1zN6aXfnsAlUud11J-nxirQ
package comsxlg.match; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.WriterException; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import java.io.*; import java.nio.file.Path; import java.util.HashMap; import java.util.Map; /** * 生成QRCode二维码 */ public class CreateQRCode { public static void writeCode() { int width = 300; int height = 300; String format = "png"; String content = "www.baidu.com"; // 定义二维码参数 Map params = new HashMap(); params.put(EncodeHintType.CHARACTER_SET,"utf-8"); // 设置字符编码 params.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);// 设置纠错等级 params.put(EncodeHintType.MARGIN,2);// 设置边距 try { // 设置内容,二维码类型,长度,宽度 BitMatrix bitMatrix= new MultiFormatWriter() .encode(content, BarcodeFormat.QR_CODE,width,height,params); /* 方式一:直接输出文文件 // 获取保存路径 File file = new File("D:/img.png"); if (!file.exists()){ // 注意在创建文件时,如果存放文件的文件夹不存在,直接用createNewFile,会抛异常 file.createNewFile(); } Path path = file.toPath(); MatrixToImageWriter.writeToPath(bitMatrix,format,path); */ // 输出到流 File file = new File("D:/img1.png"); if (!file.exists()){ // 注意在创建文件时,如果存放文件的文件夹不存在,直接用createNewFile,会抛异常 file.createNewFile(); } OutputStream out = new FileOutputStream(file); MatrixToImageWriter.writeToStream(bitMatrix,format,out); if (null != out ){ out.close(); } } catch (WriterException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { writeCode(); } }
package comsxlg.match; import com.google.zxing.*; import com.google.zxing.client.j2se.BufferedImageLuminanceSource; import com.google.zxing.common.HybridBinarizer; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; /*** * 读取QR Code 二维码 */ public class ReadQRCode { public static void main(String[] args) { ReadCode(); } private static void ReadCode() { MultiFormatReader reader = new MultiFormatReader(); try { //File file = new File("D:/img.png"); File file = new File("E:\\spring_boot\\springboot\\src\\main\\resources\\static\\qrcode.dib"); BufferedImage image = ImageIO.read(file); BinaryBitmap binaryBitmap = new BinaryBitmap( new HybridBinarizer(new BufferedImageLuminanceSource(image))); Map params = new HashMap(); params.put(EncodeHintType.CHARACTER_SET,"utf-8"); // 设置字符编码 Result result = reader.decode(binaryBitmap,params); System.out.println("content is :"+result.getText()); System.out.println("format is :"+result.getBarcodeFormat()); System.out.println("result is :"+result.toString()); } catch (IOException e) { e.printStackTrace(); } catch (NotFoundException e) { } } }