QRcode二维码 参数介绍

来源:互联网 发布:陈奕迅歌词 知乎 编辑:程序博客网 时间:2024/06/06 05:19
package com.tyzs.util;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 jp.sourceforge.qrcode.QRCodeDecoder;import jp.sourceforge.qrcode.exception.DecodingFailedException;import com.swetake.util.Qrcode;public class TwoDimensionCode {  public void encoderQRCode(String content, String imgType, int size,   String imagePath) {  BufferedImage bufImg = null;  try {   Qrcode qrcodeHandler = new Qrcode();   // 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小   qrcodeHandler.setQrcodeErrorCorrect('M');   qrcodeHandler.setQrcodeEncodeMode('B');   // 设置设置二维码尺寸,取值范围1-40,值越大尺寸越大,可存储的信息越大   qrcodeHandler.setQrcodeVersion(size);   // 获得内容的字节数组,设置编码格式   byte[] contentBytes = content.getBytes("utf-8");   // 图片尺寸   int imgSize = 67 + 12 * (size - 1);   bufImg = new BufferedImage(imgSize, imgSize,     BufferedImage.TYPE_INT_RGB);   Graphics2D gs = bufImg.createGraphics();   // 设置背景颜色   gs.setBackground(Color.WHITE);   gs.clearRect(0, 0, imgSize, imgSize);   // 设定图像颜色> BLACK   gs.setColor(Color.BLACK);   // 设置偏移量,不设置可能导致解析出错   int pixoff = 2;   // 输出内容> 二维码   if (contentBytes.length > 0 && contentBytes.length < 800) {    boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);    for (int i = 0; i < codeOut.length; i++) {     for (int j = 0; j < codeOut.length; j++) {      if (codeOut[j][i]) {       gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3);      }     }    }   } else {    throw new Exception("QRCode content bytes length = "      + contentBytes.length + " not in [0, 800].");   }   //LOGO      gs.dispose();   bufImg.flush();  } catch (Exception e) {   e.printStackTrace();  }  // 生成二维码QRCode图片  try {   File imgFile = new File(imagePath);   ImageIO.write(bufImg, imgType, imgFile);  } catch (IOException e) {   // TODO Auto-generated catch block   e.printStackTrace();  } }  public String decoderQRCode(String imgPath) {  // QRCode 二维码图片的文件  File imageFile = new File(imgPath);  BufferedImage bufImg = null;  String content = null;  try {   bufImg = ImageIO.read(imageFile);   QRCodeDecoder decoder = new QRCodeDecoder();   content = new String(decoder.decode(new TwoDimensionCodeImage(     bufImg)), "utf-8");  } catch (IOException e) {   System.out.println("Error: " + e.getMessage());   e.printStackTrace();  } catch (DecodingFailedException dfe) {   System.out.println("Error: " + dfe.getMessage());   dfe.printStackTrace();  }  return content; }}

0 0
原创粉丝点击