2019独角兽企业重金招聘Python工程师标准>>>

<!-- 二维码   --><dependency><groupId>com.google.zxing</groupId><artifactId>javase</artifactId><version>3.3.0</version></dependency>package com.hxkj.springboot.core.utils;import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Hashtable;import javax.imageio.ImageIO;import com.google.zxing.BarcodeFormat;
import com.google.zxing.Binarizer;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.DecodeHintType;
import com.google.zxing.EncodeHintType;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.Result;
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;public class QrCodeUtils {/*** @Title: encodeQrCode* @Description: zixing普通二维码生成* @param content*            二维码内容* @param prePath*            保存路径前缀* @param qrCodeName*            二维码文件保存名称* @return* @return String* @author huzhihui_c@qq.com* @date 2016年10月10日 上午10:55:54*/public static String encodeQrCode(String content, String prePath, String qrCodeName) {try {int width = 300; // 二维码图片宽度int height = 300; // 二维码图片高度String format = "png";// 二维码的图片格式Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); // 内容所使用字符集编码hints.put(EncodeHintType.MARGIN, "2");BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);// 生成二维码Path path = Paths.get(prePath, qrCodeName);MatrixToImageWriter.writeToPath(bitMatrix, format, path);System.out.println("success:-------------------生成二维码成功");} catch (Exception e) {System.out.println("error:-------------------生成二维码失败" + e.getMessage());return null;}return qrCodeName;}/*** @Title: decodeQrCode* @Description: zixing二维码解析* @param qrCodeUrl* @return* @return String* @author huzhihui_c@qq.com* @date 2016年10月10日 上午11:35:21*/public static String decodeQrCode(String qrCodeUrl) {String retStr = "";try {BufferedImage bufferedImage = ImageIO.read(new FileInputStream(qrCodeUrl));LuminanceSource source = new BufferedImageLuminanceSource(bufferedImage);Binarizer binarizer = new HybridBinarizer(source);BinaryBitmap bitmap = new BinaryBitmap(binarizer);HashMap<DecodeHintType, Object> hintTypeObjectHashMap = new HashMap<>();hintTypeObjectHashMap.put(DecodeHintType.CHARACTER_SET, "UTF-8");Result result = new MultiFormatReader().decode(bitmap, hintTypeObjectHashMap);retStr = result.getText();System.out.println("success:-------------------二维码解析成功");} catch (Exception e) {System.out.println("error:-------------------二维码解析失败" + e.getMessage());}return retStr;}/*** @Title: encodeLogoQrCode * @Description:     生成带logo的二维码* @param content* @param prePath* @param qrCodeName* @param logoPath* @return   * @return String    * @author huzhihui_c@qq.com* @date 2016年10月10日 下午1:23:22*/public static String encodeLogoQrCode(String content, String prePath, String qrCodeName, String logoPath) {try {// 基本二维码生成int width = 300; // 二维码图片宽度int height = 300; // 二维码图片高度String format = "png";// 二维码的图片格式Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); // 内容所使用字符集编码hints.put(EncodeHintType.MARGIN, "2");BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);BufferedImage bufferQrCodeImage = MatrixToImageWriter.toBufferedImage(bitMatrix);// 普通二维码的图片流BufferedImage bufferLogoImage = ImageIO.read(new File(logoPath));// logo文件Graphics2D g2 = bufferQrCodeImage.createGraphics();int matrixWidth = bufferQrCodeImage.getWidth();int matrixHeigh = bufferQrCodeImage.getHeight();g2.drawImage(bufferLogoImage, matrixWidth / 5 * 2, matrixHeigh / 5 * 2, matrixWidth / 5, matrixHeigh / 5,null);// logo绘制BasicStroke stroke = new BasicStroke(5, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);g2.setStroke(stroke);// 设置笔画对象// 指定弧度的圆角矩形RoundRectangle2D.Float round = new RoundRectangle2D.Float(matrixWidth / 5 * 2, matrixHeigh / 5 * 2,matrixWidth / 5, matrixHeigh / 5, 20, 20);g2.setColor(Color.white);g2.draw(round);// 绘制圆弧矩形// 设置logo 有一道灰色边框BasicStroke stroke2 = new BasicStroke(1, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);g2.setStroke(stroke2);// 设置笔画对象RoundRectangle2D.Float round2 = new RoundRectangle2D.Float(matrixWidth / 5 * 2 + 2, matrixHeigh / 5 * 2 + 2,matrixWidth / 5 - 4, matrixHeigh / 5 - 4, 20, 20);g2.setColor(new Color(128, 128, 128));g2.draw(round2);// 绘制圆弧矩形g2.dispose();bufferQrCodeImage.flush();ImageIO.write(bufferQrCodeImage, format, new File(prePath+qrCodeName));System.out.println("success:-------------------生成带logo二维码成功");} catch (Exception e) {e.printStackTrace();System.out.println("error:-------------------生成带logo二维码失败" + e.getMessage());}return "";}public static void main(String[] args) {encodeLogoQrCode("nihao a ","D:/","aaa.jpg","D:/logo.jpg");}
}

转载于:https://my.oschina.net/fellowtraveler/blog/756246

java 二维码生成和解析相关推荐

  1. java二维码生成与解析代码实现

    TwoDimensionCode类:二维码操作核心类 package qrcode;import java.awt.Color; import java.awt.Graphics2D; import ...

  2. [转]java二维码生成与解析代码实现

    转载地址:点击打开链接 二维码,是一种采用黑白相间的平面几何图形通过相应的编码算法来记录文字.图片.网址等信息的条码图片.如下图 二维码的特点: 1.  高密度编码,信息容量大 可容纳多达1850个大 ...

  3. java二维码生成 使用SSM框架 搭建属于自己的APP二维码合成、解析、下载

    java二维码生成 使用SSM框架 搭建属于自己的APP二维码合成.解析.下载 自己用java搭建一个属于自己APP二维码合成网站.我的思路是这样的: 1.用户在前台表单提交APP的IOS和Andro ...

  4. 矩形二维码生成,解析(彩色、多个)

    矩形二维码生成,解析(彩色.多个) 说明 java生成普通二维码.带logo二维码.彩色二维码 java解析彩色.多个二维码(一个图片上的多个二维码) 使用到的第三方jar包如下: com.googl ...

  5. java二维码生成-谷歌(Google.zxing)开源二维码生成学习及实例

    java二维码生成-谷歌(Google.zxing)开源二维码生成的实例及介绍  这里我们使用比特矩阵(位矩阵)的QR码编码在缓冲图片上画出二维码 实例有以下一个传入参数 OutputStream o ...

  6. C#的二维码生成和解析

    C#的二维码生成和解析 最近二维码非常流行,通过Goggles或快拍等二维码识别软件,可以节省不少输入时间.在网上搜了一下,发现还是有一些开源的C#程序生成解析二维码的. 生成:Open Source ...

  7. 【笔记11】uniapp点击复制;mysql数据库存储emoji表情;Java 二维码生成;uniapp引入自定义图标

    目录 前言 一.uniapp 实现点击复制某段文本 二.MySQL 数据库存储 emoji 表情 三.Layui 的富文本编辑器 四.谷歌 Java 二维码生成 (1) 引入 MAVEN 依赖 五.微 ...

  8. java二维码生成并可以转换

    二维码很常见,简单的二维码生成 pom中导入两个包 <!--二维码--><dependency><groupId>com.google.zxing</grou ...

  9. JAVA二维码生成工具

    需要导入的pom依赖 <dependency><groupId>com.google.zxing</groupId><artifactId>javase ...

最新文章

  1. R语言ggplot2可视化指定保存到pdf的图像的具体尺寸、保证缩放的一致性:使得绘图元素(文本、点大小等)在设计上都具有相同的绝对大小、设置全局数据点大小、主题格式、设置图像保存的具体尺寸
  2. Thoughtworks 正式成为阿里云云原生核心合作伙伴
  3. pyspark distinct代码示例
  4. boost::gil::is_homogeneous用法的测试程序
  5. Nginx-常见服务器的对比
  6. H5新增API_geoLocation
  7. CentOS7 linux下yum安装redis以及使用
  8. php可变变量讲解,PHP可变变量实例详解
  9. 在html中 正确的嵌套方式是( ).,HTML及网页制作练习题-完整版
  10. 编程杂谈—— 浮点数
  11. 如何定时备份远程mysql数据库
  12. MATLAB使用cic滤波器,基于Matlab的CIC滤波器设计
  13. 前端日志输出分享(没有技术,纯娱乐)
  14. 怎样彻底卸载电脑上的软件
  15. 推荐系统(一):不了解推荐系统,基本在被out的队列,岌岌可危
  16. Caused by: redis.clients.jedis.exceptions.JedisConnectionException: JedisPubSub was not subscribed t
  17. 两条平行线之间的距离
  18. 启明星辰潘柱廷:信息安全市场的战国春秋与陆地海洋观
  19. day16_雷神_前端04
  20. java -苹果支付凭证校验

热门文章

  1. 2012 AndroidWorld Global Developers Conference
  2. 用OWA访问Exchange邮箱
  3. 合并的路径Path.Combine
  4. Springboot08-项目单元测试(接口测试)
  5. static关键字的作用?
  6. 〖Linux〗Bash快捷键使用
  7. CDays–2 完成核心功能 CMD模块 Python基础教程 cmd cli
  8. 2010年终总结---戏说茅台酒涨价
  9. Windows 网络服务架构系列课程详解(六) ---利用NLB群集实现WEB服务器的可靠性...
  10. 5-django——验证码,中间件