热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java生成二维码图片

文章目录生成二维码图片参考生成二维码图片新建MavenProject,引入依赖:com.google.zx


文章目录

  • 生成二维码图片
  • 参考


生成二维码图片

新建 Maven Project,引入依赖:

<dependency><groupId>com.google.zxinggroupId><artifactId>coreartifactId><version>3.3.0version>
dependency><dependency><groupId>com.google.zxinggroupId><artifactId>javaseartifactId><version>3.3.0version>
dependency>

新建 QrCodeUtils 工具类&#xff1a;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Path;
import java.util.HashMap;
import java.util.Map;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.NotFoundException;
import com.google.zxing.Result;
import com.google.zxing.WriterException;
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.QRCodeWriter;public class QrCodeUtils {private static final BarcodeFormat BARCODE_FORMAT &#61; BarcodeFormat.QR_CODE;private static final QRCodeWriter qrCodeWriter &#61; new QRCodeWriter();private static final MultiFormatReader multiFormatReader &#61; new MultiFormatReader();public static BitMatrix encode(String contents, int width, int height, Map<EncodeHintType, Object> hints) throws WriterException {BitMatrix bitMatrix &#61; qrCodeWriter.encode(contents, BARCODE_FORMAT, width, height, hints);return bitMatrix;}public static Result decode(File input) throws IOException, NotFoundException {BufferedImage bufferedImage &#61; ImageIO.read(input);LuminanceSource luminanceSource &#61; new BufferedImageLuminanceSource(bufferedImage);Binarizer binarizer &#61; new HybridBinarizer(luminanceSource);BinaryBitmap binaryBitmap &#61; new BinaryBitmap(binarizer);Map<DecodeHintType, Object> hints &#61; new HashMap<DecodeHintType, Object>();hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");return multiFormatReader.decode(binaryBitmap, hints);}public static void writeToPah(BitMatrix matrix, String format, File file) throws IOException {MatrixToImageWriter.writeToPath(matrix, format, file.toPath());}public static void writeToPah(BitMatrix matrix, String format, Path file) throws IOException {MatrixToImageWriter.writeToPath(matrix, format, file);}public static void writeToStream(BitMatrix matrix, String format, OutputStream stream) throws IOException {MatrixToImageWriter.writeToStream(matrix, format, stream);}
}

测试类&#xff1a;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;import com.google.zxing.EncodeHintType;
import com.google.zxing.NotFoundException;
import com.google.zxing.Result;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;public class Test {public static void main(String[] args) throws WriterException, IOException, NotFoundException {File file &#61; new File("二维码&#xff08;QrCode&#xff09;.png");String contents &#61; file.getName();Map<EncodeHintType, Object> hints &#61; new HashMap<EncodeHintType, Object>();hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);hints.put(EncodeHintType.MARGIN, 1);BitMatrix bitMatrix &#61; QrCodeUtils.encode(contents, 800, 800, hints);QrCodeUtils.writeToPah(bitMatrix, "PNG", file); // 生成二维码图片// ByteArrayOutputStream stream &#61; new ByteArrayOutputStream();
// QrCodeUtils.writeToStream(bitMatrix, "PNG", stream);
//
// byte[] byteArray &#61; stream.toByteArray();Result result &#61; QrCodeUtils.decode(file); // 识别二维码System.out.println(result.getText());}
}

生成的二维码图片位于项目根目录中&#xff1a;

在这里插入图片描述

控制台输出&#xff1a;

二维码&#xff08;QrCode&#xff09;.png

参考

Java实现二维码生成 Google-Zxing

Java识别二维码【工具类】


推荐阅读
  • 本文介绍了在Android开发中使用软引用和弱引用的应用。如果一个对象只具有软引用,那么只有在内存不够的情况下才会被回收,可以用来实现内存敏感的高速缓存;而如果一个对象只具有弱引用,不管内存是否足够,都会被垃圾回收器回收。软引用和弱引用还可以与引用队列联合使用,当被引用的对象被回收时,会将引用加入到关联的引用队列中。软引用和弱引用的根本区别在于生命周期的长短,弱引用的对象可能随时被回收,而软引用的对象只有在内存不够时才会被回收。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • Java 11相对于Java 8,OptaPlanner性能提升有多大?
    本文通过基准测试比较了Java 11和Java 8对OptaPlanner的性能提升。测试结果表明,在相同的硬件环境下,Java 11相对于Java 8在垃圾回收方面表现更好,从而提升了OptaPlanner的性能。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • HashMap的相关问题及其底层数据结构和操作流程
    本文介绍了关于HashMap的相关问题,包括其底层数据结构、JDK1.7和JDK1.8的差异、红黑树的使用、扩容和树化的条件、退化为链表的情况、索引的计算方法、hashcode和hash()方法的作用、数组容量的选择、Put方法的流程以及并发问题下的操作。文章还提到了扩容死链和数据错乱的问题,并探讨了key的设计要求。对于对Java面试中的HashMap问题感兴趣的读者,本文将为您提供一些有用的技术和经验。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
  • 使用freemaker生成Java代码的步骤及示例代码
    本文介绍了使用freemaker这个jar包生成Java代码的步骤,通过提前编辑好的模板,可以避免写重复代码。首先需要在springboot的pom.xml文件中加入freemaker的依赖包。然后编写模板,定义要生成的Java类的属性和方法。最后编写生成代码的类,通过加载模板文件和数据模型,生成Java代码文件。本文提供了示例代码,并展示了文件目录结构。 ... [详细]
  • 华为路由交换由浅入深系列(七):理解华为交换机三种端口模式Access、Hybrid和Trunk对数据包Tag的处理过程
    说明华为交换机三种端口模式Access、Hybrid和Trunk的理解【针对华为H3C,思科不存在Hybrid模式】说明untag就是普通的ethernet报文& ... [详细]
author-avatar
手机用户2502887831
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有