栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java实现的生成二维码和解析二维码URL操作示例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java实现的生成二维码和解析二维码URL操作示例

本文实例讲述了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);
  
  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";
  }
  
  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);
    }
  }
}

PS:这里再为大家推荐两款二维码相关在线工具供大家参考使用:

在线生成二维码工具(加强版)
http://tools.jb51.net/transcoding/jb51qrcode

在线二维码解码识别工具
http://tools.jb51.net/transcoding/trans_qrcode

更多关于java相关内容感兴趣的读者可查看本站专题:《Java编码操作技巧总结》、《Java数学运算技巧总结》、《Java数据结构与算法教程》、《Java字符与字符串操作技巧总结》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/140449.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号