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)
上一篇 2021-07-10 01:45:21
下一篇 2021-07-10 01:45:23

相关推荐

  • 如何推广英文网站(网络推广英文怎么说)

    如何推广英文网站,网络推广英文怎么说内容导航:英文网站如何推广英文网站最好的推广手段是什么如何推广自己的英文外贸网站英文网站要如何推广一、英文网站如何推广关于英文网站的推荐,你可以先从中文网站的推荐学起。登陆搜索引擎,登陆目录站,DIG,文章站,多做外链。当然,要选择英文的。另外,为什么要用CN域名呢?二、英文网站最好的推广手段是什么英文网站的推广方法和中文网站的推广方法,没

    2022-04-29
    1060
  • 捷信不还会有什么后果(怎么样跟捷信协商还款)

    捷信不还会有什么后果?怎么样跟捷信协商还款,久久派带你了解相关信息。随着捷信长沙大批量员工被解散的消息被爆出之后,大家不是同情员工,而是祝贺,只是因为捷信近年来对于借款人的伤害太大,我们从某投诉平台上看到,捷信的投诉量达到50796条结果,这里面大多都是借款人进行投诉,其中有是因为高利贷、曝光通讯录投诉的比例最多,占投诉量80%以上!自长沙员工出现不给工资的事件之后,捷信总裁坠机,这

    2021-09-20 用户投稿
    2350
  • 联想30bd主板参数(联想笔记本电脑换主板大概费用)

    联想笔记本开机一直黑屏的原因如下:首先尝试以下操作:将电池和电源适配器全部拆下来,按住开关按键30秒将静电放光,等待15分钟左右,再单独连接电源适配器供电开机;如果还不能开机,哪就是以下原因。(1)第

    2021-12-15 用户投稿
    1500
  • 「扫码进宝妈群免费加入」知道对方电话号码如何加入他的微信群

    扫码进宝妈群免费加入,欢迎大家扫码进群内容导航:怎么加宝妈群扫描二维码即刻进入“潮流玩家对喷群499人”孕妈群。大家可以扫码进哟这是我建立的一个孕妈群知道对方电话号码如何加入他的微信群一、怎么加宝妈群微信加入宝妈群的方式如下:1、寻找你的微信好友里是宝妈的朋友,让他们拉你进去。2、你自己可以建立一个宝妈群。把二维码放到朋友圈、网上,自然会有宝妈进群。3、搜索宝妈聚集的网站,然后申请加入。

    2022-04-22
    3550
  • 米德尔斯堡足球俱乐部(米德尔斯堡足球俱乐部赛程)

    米德尔斯堡足球俱乐部,米德尔斯堡足球俱乐部赛程 内容导航: 米德尔斯堡在英国哪里 哈塞尔巴因克 效力过几个俱乐部 英国米德尔斯堡有亚洲超市吗 一、米德尔斯堡在英国哪里 米德尔斯堡(…

    2022-12-18
    20
  • 班超投笔从戎原文及译文(班超投笔从戎文言文翻译)

    原文班超家贫,常为官佣书①以供养。久劳苦,尝②辍③业投笔叹曰:”大丈夫无他志略④,犹⑤当效傅介子、张骞⑥立功异域,以取封侯,安能久事笔砚间乎?”左右皆笑之。超曰:”小子⑦安⑧知壮士之志哉!”后超出使西域,竟⑨立功封侯,史留名。注释

    2021-11-26 技术经验
    9550

发表回复

登录后才能评论