Java生成读取条形码和二维码的简单示例

条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的规则排列,用来表示一组信息的图形标识符,而二维码大家应该都很熟悉了,这篇文章主要给大家介绍了关于Java生成读取条形码和二维码的相关资料,需要的朋友可以参考下

Java生成读取条形码和二维码的简单示例,恰卡网带你了解更多相关信息。

条形码

将宽度不等的多个黑条和白条,按照一定的编码规则排序,用以表达一组信息的图像标识符

通常代表一串数字 / 字母,每一位有特殊含义

一般数据容量30个数字 / 字母

二维码

用某种特定几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息

比一维条形码能存储更多信息,表示更多数据类型

能够存储数字 / 字母 / 汉字 / 图片等信息

可存储几百到几十KB字符

Zxing

Zxing主要是Google出品的,用于识别一维码和二维码的第三方库

主要类:

  • BitMatrix位图矩阵
  • MultiFormatWriter位图编写器
  • MatrixToImageWriter写入图片

Maven导入Zxing

<dependencies>        <!-- ****/d/file/p/2021070918024146931/2021070918024146932 -->        <dependency>            <groupId>com.google.zxing</groupId>            <artifactId>javase</artifactId>            <version>3.2.1</version>        </dependency>        <dependency>            <groupId>com.google.zxing</groupId>            <artifactId>core</artifactId>            <version>3.0.0</version>        </dependency></dependencies>

生成一维码java

public static void main(String[] args) {    generateCode(new File(\"1dcode.png\"), \"1390351289\", 500, 250);}/** * @param file    生成的文件名称 * @param code    一维码存储的数据信息 * @param width   生成图片的宽度 * @param height  生成图片的高度 * @return void * */public static void generateCode(File file, String code, int width, int height){    // 定义位图矩阵BitMatrix    BitMatrix matrix = null;    try {        // 使用code_128格式进行编码生成100*25的条形码        MultiFormatWriter writer = new MultiFormatWriter();        matrix = writer.encode(code, BarcodeFormat.CODE_128, width, height, null);    } catch (WriterException e) {        e.printStackTrace();    }    // 将位图矩阵BitMatrix保存为图片    try {        FileOutputStream outputStream = new FileOutputStream(file);        ImageIO.write(MatrixToImageWriter.toBufferedImage(matrix), \"png\", outputStream);        outputStream.flush();        outputStream.close();    } catch (Exception e) {        e.printStackTrace();    }}

注意:一维码只能存储数字和字母,其他数据会报Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.0.0:exec (default-cli) on project MavenDemo: Command execution failed.错误java

读取一维码

public static void main(String[] args) {    readCode(new File(\"1dcode.png\"));}/** * @param readImage    读取一维码图片名 * @return void * */public static void readCode(File readImage) {    try {        BufferedImage image = ImageIO.read(readImage);        if (image == null) {            return;        }        LuminanceSource source = new BufferedImageLuminanceSource(image);        BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));        Map<DecodeHintType, Object> hints = new HashMap<DecodeHintType, Object>();        hints.put(DecodeHintType.CHARACTER_SET, \"gbk\");        hints.put(DecodeHintType.PURE_BARCODE, Boolean.TRUE);        hints.put(DecodeHintType.TRY_HARDER, Boolean.TRUE);        Result result = new MultiFormatReader().decode(bitmap, hints);        System.out.println(result.getText());    } catch (Exception e) {        e.printStackTrace();    }}

注意:当使用String类进行转码时,要使用Java.lang包的,Maven导包的时候会导入第三方Apache的String类

生成二维码

/** 定义二维码的宽度 */private final static int WIDTH = 300;/** 定义二维码的高度 */private final static int HEIGHT = 300;/** 定义二维码的格式 */private final static String FORMAT = \"png\";/** * @param file * @param content * @return void * */public static void generateQRCode(File file, String content) {    // 定义二维码参数    Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();    // 设置编码    hints.put(EncodeHintType.CHARACTER_SET, \"UTF-8\");    // 设置容错等级    hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);    // 设置边距,默认为5    hints.put(EncodeHintType.MARGIN, 2);    try {        BitMatrix bitMatrix = new MultiFormatWriter()                .encode(content, BarcodeFormat.QR_CODE, WIDTH, HEIGHT, hints);        Path path = file.toPath();        // 保存到项目跟目录中        MatrixToImageWriter.writeToPath(bitMatrix, FORMAT, path);    } catch (Exception e) {        e.printStackTrace();    }}public static void main(String[] args) {    generateQRCode(new File(\"smt.png\"), \"淑玫唐家居网\");}

读取二维码

/** * @param file    读取二维码的文件名 * @return void * */public static void readQRCode(File file) {    MultiFormatReader reader = new MultiFormatReader();    try {        BufferedImage image = ImageIO.read(file);        BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));        Map<DecodeHintType, Object> hints = new HashMap<>();        hints.put(DecodeHintType.CHARACTER_SET, \"UTF-8\");        Result result = reader.decode(binaryBitmap, hints);        System.out.println(\"解析结果: \" + new String(result.toString().getBytes(\"GBK\"), \"GBK\"));        System.out.println(\"二维码格式: \" + result.getBarcodeFormat());        System.out.println(\"二维码文本内容: \" + new String(result.getText().getBytes(\"GBK\"), \"GBK\"));    } catch (Exception e) {        e.printStackTrace();    }}public static void main(String[] args) {    readQRCode(new File(\"smt.png\"));}

注意: Maven打印的控制台中会出现中文乱码,在IDEA Setting->maven->runner VMoptions:-Dfile.encoding=GB2312;即可解决

总结

到此这篇关于Java生成读取条形码和二维码的文章就介绍到这了,更多相关Java生成读取条形码二维码内容请搜索趣讯吧以前的文章或继续浏览下面的相关文章希望大家以后多多支持趣讯吧!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/2112.html

(0)
nan
上一篇 2021-07-10
下一篇 2021-07-10

相关推荐

  • 应染瑶龙苍澜小说在哪里可以看-(应染瑶龙苍澜)最新章节阅读

    阿灵连忙摆摆手,拿出了一张红色的请柬。应染瑶微微愣了一下,打开请柬一看,上面居然写的是云雪薇和戚元倧的名字,这是两人的订婚请柬!她嘴角露出了一道意味不明的笑,语气微嘲:“云雪薇居然答应和戚元倧订婚,真是有趣,看来有热闹可看了。”“嗯?你是说,三天后的订婚宴,太初太子也会去?”阿灵点头。难怪阿灵不让自己去太初圣国,原来是要去四象国。

    网络资讯 2023-05-08
    0
  • 免费ddos平台攻击(高防服务器是什么意思)

    在租用高防类服务器的时候,经常有服务商向用户推荐说,高防服务器能秒解攻击。那么,秒解到底是个怎样的概念?秒解的意思是,在服务器受到大流量攻击的时候,当攻击超过我们购买高防防御值的时候,会出现服务器IP被封的现象,而如果服务商一直不操作,用户也不操作,

    2021-10-14
    0
  • 封墨言杨千语书名是《渣爹做梦都想抢妈咪》在线赏析_封墨言杨千语txt小说阅读

    真是鬼迷心窍,怎么就任她拿捏!”徐红欲哭无泪,跌坐在椅子上,几近捶胸顿足。封诗雯起身下床,缓缓走到母亲身边蹲下,“妈……”“雯雯,你说你哥怎么就那么糊涂啊……为了个女人,连亲爸亲妈都不要了……”“妈,你别这样,你身体还没好,别气了,身体要紧……”封诗雯连忙轻抚着徐红的胸口,帮她顺气。

    网络资讯 2023-07-17
    0
  • 水逆结束 贵人相助事业越来越顺利的3星座

    正因为如此,射手在人际交往中都有很大的收获。再贵人帮助下,对待目标有清晰的规划,可以更好地实现自己的目标。事业越来越顺利,贵人帮助了自己很多,感谢贵人。处女座处女座在本次水逆期间事业会受到影响,错过了很多工作机会,很多项目自己都失去了。但是一旦水逆结束,她们的各方面发展都恢复正常,对于处女座们来说不仅是收获惊喜的开始也是她们获取好运的开会时,相信不管是事业还是爱情他们的收

    知识 2023-07-10
    0
  • 离婚后,傅先生每天惦记我小说全文免费阅读无弹窗大结局-(季娉婷傅司泽)小说美文赏析

    季娉婷一番手忙脚乱抵达公司,差30秒就迟到,暗地里季娉婷忍不住吐槽傅司泽一通,害她急急忙忙、差点还害她迟到! 送完季娉婷去上班,傅司泽回了自己新开的公司,他给自己新开张的公司取名叫泽盛集团,之前傅氏集团的员工,全被傅司泽架空。 各个部门全搬运到傅司泽新开的公司任职,眨眼间,穆靖尧所在的傅氏集团已经空了…… 穆靖尧本身对傅氏的业务不熟悉,弄的焦头烂额。 每天一上班,就想狂骂傅司泽一顿。 恨不得把傅司

    网络资讯 2023-05-04
    0
  • 毛孔粗大是什么原因怎么消除(毛孔粗大是什么原因造成的)

    大家好,小科来为大家解答以上问题。毛孔粗大是什么原因怎么消除,毛孔粗大是什么原因造成的很多人还不知道,现在让我们一起来看看吧!1、1、油脂分泌旺盛会导致毛孔粗大,皮脂腺会分泌皮脂和油脂,如果分泌很旺盛,就会让皮肤非常的油腻,油性肌肤很容易附着灰尘,污垢,当我们皮肤没有正确的清洁干净时,污垢就会堵塞在毛孔中,毛孔也会越来越大。2、2、肌肤严重老化会导致毛孔粗大,肌肤的衰老是不可避免的,随着肌肤老化,

    2023-10-24
    0

发表回复

登录后才能评论