一聚教程网:一个值得你收藏的教程网站

最新下载

时时彩官方开奖:Java实现的生成二维码和解析二维码URL操作示例

时间:2018-07-17 15:55:00 编辑:猪哥 来源:转载

本文实例讲述了Java实现的生成二维码和解析二维码URL操作。分享给大家供大家参考,具体如下:

二维码依赖jar包,zxing



  com.google.zxing
  javase
  3.0.0

createQRCode生成二维码,anlysisQRCode解析二维码

package com.xgt.util;
import com.google.zxing.*;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sun.misc.BASE64Encoder;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.nio.file.Path;
import java.util.Hashtable;
public class QRCodeUtil {
  private static final Logger logger = LoggerFactory.getLogger(QRCodeUtil.class);
  /**
   * 创建二维码
   * @param url
   * @param fileName
   * @return
   * @throws IOException
   */
  public static String createQRCode(String url,String fileDirectory,String fileName) throws IOException {
    int width = 500;
    int height = 500;
    String format = "png";
    Hashtable hints = new Hashtable();
    hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
    hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
    hints.put(EncodeHintType.MARGIN, 2);
    try {
      BitMatrix bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, width, height, hints);
      File fileDir = new File(fileDirectory);
      FileToolUtil.judeDirExists(fileDir);
      Path file = new File(fileDirectory,fileName+".png").toPath();//在D盘生成二维码图片
      MatrixToImageWriter.writeToPath(bitMatrix, format, file);
      BufferedImage image = MatrixToImageWriter.toBufferedImage(bitMatrix);
      ByteArrayOutputStream os = new ByteArrayOutputStream();//新建流。
      ImageIO.write(image, format, os);//利用ImageIO类提供的write方法,将bi以png图片的数据模式写入流。
      byte b[] = os.toByteArray();//从流中获取数据数组。
      String str = new BASE64Encoder().encode(b);
      IOUtils.closeQuietly(os);
      return str;
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }finally {
      //DeleteFileUtil.delete(fileDirectory);
    }
    return "NULL";
  }
  /**
   * 解析出二维码的url
   * 无用
   * @param file
   * @param fileDirectory
   * @throws NotFoundException
   */
  public static void anlaysisQRCode(File file,String fileDirectory) throws NotFoundException {
    MultiFormatReader formatReader=new MultiFormatReader();
    BufferedImage image=null;
    try {
      image = ImageIO.read(file);
    BinaryBitmap binaryBitmap =new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));
    Hashtable hints=new Hashtable();
    hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
    Result result=formatReader.decode(binaryBitmap,hints);
    logger.info("解析结果:"+result.toString());
    logger.info("解析格式:"+result.getBarcodeFormat());
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }finally {
      DeleteFileUtil.delete(fileDirectory);
    }
  }
}

文章评论

热门栏目

  • 荆门全面实现社会保障卡即时制卡 2019-05-20
  • 【春到渭南】随手拍渭南各地区春景,一贴看尽渭南春色! 2019-05-20
  • 汪峰章子怡带女儿醒醒看马戏表演 满脸幸福 2019-05-19
  • 爱护民生:什么基金都不能买,即使获利,也不会给分多少红利,只是意思意思。 2019-05-19
  • 北京市北京盈之宝4S店【在线咨询】 2019-05-18
  • 美媒:研究发现高血压会增加痴呆风险 2019-05-18
  • 房价还会跌吗?这几条黄金线索告诉你背后的事实 ——凤凰网房产西安 2019-05-17
  • 搞市场经济,也不意味这政府就能偷懒,不是什么都甩给市场,美其名曰"市场会自我调节" 2019-05-17
  • 经常吃它到老耳聪目明牙齿好 让你越来越健康-美食资讯 2019-05-16
  • 端午小长假杭州接待游客454.8万人次 9成民宿预订一空 2019-05-16
  • 十九大党章修正案的新时代意蕴 2019-05-15
  • 勇敢挑战“不可能”(今日谈) 2019-05-14
  • 第十三届“三晋之春”合唱比赛在阳泉开幕 2019-05-14
  • 驴友在北京凤凰岭失联 百人搜救七天仍未找到踪迹 2019-05-13
  • 光明网招聘时事新闻分析编辑 2019-05-12
  • 943| 401| 584| 820| 817| 946| 124| 901| 9| 789|