com.google.zxing.NotFoundException-识别图片二维码信息错误
一、问题由来
自己在做一个小程序项目的后台,其中需要使用到识别图片二维码信息,而且是必须在Java后台进行识别二维码操作。去百度里面很快找到一个方法,
可以识别简单的二维码,而且自己生成的简单的二维码图片也能够正确识别,这样我就以为可以了。项目中有个需求,将自己生成的二维码图片和其他
图片合成一张新的图片,功能我也很快实现,并且部署到阿里云的测试服务器,生成二维码图片没有任何问题。可是在进行联合调试时,发现问题。报
了如标题中的错误,导致二维码不能正确识别,程序不能正常运行。
二、问题分析
拿到这个问题后,感觉很奇怪以前都好好的,怎么突然就不行了呢?自己以前是亲自测试过使用自己写的程序来识别二维码信息,100%确认是没问题的。
把这个问题往百度里面一扔,很快出来很多的答案,自己也看了其中的几篇博文,了解到报错的原因。报错的原因是,如果使用自己原来的识别图片的方法
识别简单的二维码没问题,比如识别的图片只有单张图片,不是合成、处理过的,如果是处理过的图片,那么就会出现错误。
/**
* 解析二维码图片
* @param filePath 图片路径
*/
public static String decodeQR(String filePath) {
if (StringUtils.isBlank(filePath)) {
return "-1";
}
String content = "";
HashMap<DecodeHintType, Object> hints = new HashMap<DecodeHintType, Object>();
hints.put(DecodeHintType.CHARACTER_SET, "UTF-8"); // 指定编码方式,防止中文乱码
hints.put(DecodeHintType.TRY_HARDER, Boolean.TRUE);
hints.put(DecodeHintType.PURE_BARCODE, Boolean.TRUE);
try (FileInputStream fis = new FileInputStream(filePath)){
BufferedImage image = ImageIO.read(fis);
LuminanceSource source = new BufferedImageLuminanceSource(image);
Binarizer binarizer = new HybridBinarizer(source);
BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);
MultiFormatReader reader = new MultiFormatReader();
Result result = reader.decode(binaryBitmap, hints);
content = result.getText();
} catch (Exception e) {
e.printStackTrace();
log.error("解析图片二维码异常--->" + e.getMessage());
return "-1";
}
return content;
}
三、解决方案
知道问题的原因后,自己尝试找去找解决办法,在百度里面查看了很多的答案,基本上都一个一个的尝试,最终都没有解决。
https://www.cnblogs.com/rencongums/articles/5805176.html
https://www.cnblogs.com/liyanli-mu640065/p/9165584.html
https://www.shangmayuan.com/a/f503062219ae402e9cca27d6.html
https://juejin.cn/post/6844903806690557966
至少尝试了三四种方法。
然后去google上面查找问题的答案,在stackoverflow上面找到一篇文件,解决了这个办法。
https://stackoverflow.com/questions/10583622/com-google-zxing-notfoundexception-exception-comes-when-core-java-program-execut
原代码如下:
BufferedImage image;
image = ImageIO.read(imageFile);
BufferedImage cropedImage = image.getSubimage(0, 0, 914, 400);
// using the cropedImage instead of image
LuminanceSource source = new BufferedImageLuminanceSource(cropedImage);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
// barcode decoding
QRCodeReader reader = new QRCodeReader();
Result result = null;
try
{
result = reader.decode(bitmap);
}
catch (ReaderException e)
{
return "reader error";
}
立马进行测试,问题解决。
com.google.zxing.NotFoundException-识别图片二维码信息错误的更多相关文章
- zxing 如何识别反转二维码
说起二维码扫描,估计很多人用的是 zxing 吧. 然而 zxing 虽然好用,但是却有一些坑. 这边分析一下自己实际项目遇到的一个坑. 什么坑呢? 下面举个栗子你就懂了. 这边生成二维码使用的是网络 ...
- 使用Google ZXing生成和解析二维码
pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...
- 【java】google的zxing架包生成二维码和读取二维码【可带文字和logo】
承接RC4生成不重复字符串的需求之后,因为优惠码要方便用户使用的缘故,所以思来想去,觉得还是直接生成二维码给用户直接扫比较实用,也不用用户专门记录冗长的优惠码编号. ================= ...
- android 图片二维码识别和保存(一)
最新业务开发二维码识别的功能,这个功能,在很多应用上都有,比如微信长按图片识别二维码,如果图片中存在可以识别的二维码时,可以增加一个选项 识别二维码.那么如何去实现这个功能呢.这里其实也非常简单,首先 ...
- android 图片二维码识别和保存(二)
续上一篇,开发图片二维码识别功能后,我们对功能进行性能分析内存占用显著提高了,不使用该功能内存占用大约是147M,使用这个功能多次以后,高达203M. 因此对功能进行研究,发现每次生成的图片没有即时的 ...
- ZXing 生成、读取二维码(带logo)
前言 ZXing,一个支持在图像中解码和生成条形码(如二维码.PDF 417.EAN.UPC.Aztec.Data Matrix.Codabar)的库.ZXing(“zebra crossing”)是 ...
- Google API快速生成QR二维码
Google API快速生成QR二维码 现在来说生成二维码最简单的方法是使用Google Chart API来实现,再次膜拜Google大神- Google Chart API是一套可以让你在线生成报 ...
- 【转】Delphi+Halcon实战一:两行代码识别QR二维码
Delphi+Halcon实战一:两行代码识别QR二维码 感谢网友:绝代双椒( QQ号应原作者要求隐藏了:xxxx6348)的支持 本文是绝代双椒的作品,因为最近在忙zw量化培训,和ziwang.co ...
- online QRcode generator , QRcode=== (Quick Response Code) , 二维条码,二维码,彩色二维码,图片二维码,
online QRcode generator , QRcode=== (Quick Response Code) , 二维条码,二维码,彩色二维码,图片二维码, 1 http://cli.i ...
随机推荐
- 利用postman进行api接口开发
场景: api接口开发时,经常使用一些工具来帮助设计开发.Yapi主要是在设计阶段进行api接口设计,统一前后端参数请求和返回体:swagger主要在开发阶段,用来显示实际上后端开发进度和接口情况:p ...
- java基于mongodb实现分布式锁
原理 通过线程安全findAndModify 实现锁 实现 定义锁存储对象: /** * mongodb 分布式锁 */ @Data @NoArgsConstructor @AllArgsConstr ...
- thinkPHP5 5.0.23 远程代码执行漏洞
修改数据包 POST /index.php?s=captcha HTTP/1.1 Host: 192.168.49.2:8080 User-Agent: Mozilla/5.0 (Macintosh; ...
- 正则表达式-固定XML格式提取内容
(?<=(<(?<a>([A-Za-z]*?))>)).*?(?=(</\k<a>>))
- MSF+Nmap TCP空闲扫描
MSF+Nmap TCP空闲扫描 前言 TCP空闲扫描是一种高级的扫描技术,可以冒充内网中另一台IP地址来对内网中的目标进行隐秘的扫描. 正文 在进行扫描之前,我们需要了解一个概念,即递增IP帧标识, ...
- Xmind-xss漏洞复现并上线Coblat-strike
前言:本漏洞由WebRay烽火台实验室发现,Xmind2020存在xss漏洞,并且可以进行任意代码执行,目前官方还未进行补丁修复,所以请目前Xmind用户警惕Xmind文件. 本博客讲复现漏洞及上线到 ...
- C++ //虚析构和纯虚析构
1 //虚析构和纯虚析构 2 3 #include <iostream> 4 #include <string> 5 using namespace std; 6 7 clas ...
- 字节跳动前技术总监开源分享《Android架构设计权威指南》,YYDS!
架构就像是一场进化史,根据不同时期的需求,演变出不同的架构,车轮滚滚,到今天,移动端框架百花齐放,让人目不暇接.但是其中的本质是磨灭不了的,换言之根本没有磨灭而是隐藏到了人们所看不到的地方,但是依旧发 ...
- kong整合Cosul实践(3)
1. 准备工作: 需要.netcore或者java程序一套,引入consul第三方包 我这里搭建了一个.netcore的webapi项目,引入Consul第三方包,网上可查资料一堆 环境需要kong, ...
- Java EE-下载安装eclipse并设置环境变量的步骤
1.下载eclipse: 官网:https://www.eclipse.org/downloads/ (1)点击链接后显示如图 (2)点击Download Packages 下载安装包,不要点击&qu ...