java条码大小_java - ML Kit条形码扫描:无效的图像数据大小

我想在捕获的图像中检测条形码。我使用android的camera2捕获图像。此后,将检索图像的元数据并将图像保存到设备。元数据全部传递到下一个活动,该活动是应用程序尝试检测条形码的地方。

下一个活动是从先前保存的文件创建一个byte []。接下来,使用随意图传递的数据创建相关的FirebaseVision对象。最后,应用程序尝试调用detectInImage()方法,该方法会引发错误:

“java.lang.IllegalArgumentException:无效的图像数据大小。”

我怀疑这是因为捕获的图像太大,但是我似乎无法弄清楚如何捕获较小的图像,并且在参考文档中也找不到任何有关允许的最大尺寸的信息。非常感谢您提供有关此错误及其解决方法的信息。以下是我认为是相关的代码。private final ImageReader.OnImageAvailableListener onImageAvailableListener

= new ImageReader.OnImageAvailableListener() {

@Override

public void onImageAvailable(ImageReader imageReader) {

try{

// Semaphore ensures date is recorded before starting next activity

storeData.acquire();

Image resultImg = imageReader.acquireNextImage(); // Image from camera

imgWidth = resultImg.getWidth();

imgHeight = resultImg.getHeight();

ByteBuffer buffer = resultImg.getPlanes()[0].getBuffer();

data = new byte[buffer.remaining()]; // Byte array with the images data

buffer.get(data);

String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());

// Note: mediaFile directs to Pictures/"ThisProject" folder

File media = new File(mediaFile.getPath() +

File.separator + "IMG_" + timeStamp + ".jpg");

// Saving the image

FileOutputStream fos = null;

try {

fos = new FileOutputStream(media);

fos.write(data);

uri = Uri.fromFile(media);

} catch (IOException e) {

Log.e(TAG, e.getMessage());

} finally {

if (fos != null) {

try {

fos.close();

} catch (IOException e) {

Log.e(TAG, e.getMessage());

}

}

}

resultImg.close();

} catch (InterruptedException e) {

Log.e(TAG, e.getMessage());

}

storeData.release();

}

};

这实际上是检索图像的高度和宽度,然后将其写入文件。

发送到下一个活动的数据包括:图像宽度,图像高度,图像旋转和指向文件的Uri。

使用此工具,我尝试使用Firebase ML Kit检测条形码:

// uri is the uri referencing the saved image

File f = new File(uri.getPath());

data = new byte[(int) f.length()];

try{

BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f));

DataInputStream dis = new DataInputStream(bis);

dis.readFully(data);

} catch (IOException e) {

Log.e(TAG, e.getMessage());

}

FirebaseVisionBarcodeDetectorOptions options = new FirebaseVisionBarcodeDetectorOptions.Builder().setBarcodeFormats(

FirebaseVisionBarcode.FORMAT_QR_CODE,

FirebaseVisionBarcode.FORMAT_DATA_MATRIX

).build();

FirebaseVisionBarcodeDetector detector = FirebaseVision.getInstance().getVisionBarcodeDetector(options);

FirebaseVisionImage image;

int rotationResult;

switch (imgRotation) {

case 0: {

rotationResult = FirebaseVisionImageMetadata.ROTATION_0;

break;

}

case 90: {

rotationResult = FirebaseVisionImageMetadata.ROTATION_90;

break;

}

case 180: {

rotationResult = FirebaseVisionImageMetadata.ROTATION_180;

break;

}

case 270: {

rotationResult = FirebaseVisionImageMetadata.ROTATION_270;

break;

}

default: {

rotationResult = FirebaseVisionImageMetadata.ROTATION_0;

break;

}

}

FirebaseVisionImageMetadata metadata = new FirebaseVisionImageMetadata.Builder()

.setWidth(imgWidth)

.setHeight(imgHeight)

.setFormat(FirebaseVisionImageMetadata.IMAGE_FORMAT_NV21)

.setRotation(rotationResult)

.build();

image = FirebaseVisionImage.fromByteArray(data, metadata);

Task> result = detector.detectInImage(image)

最佳答案

一些东西。

如果使用camera2,则图像格式不应为NV21。有关所有camera2支持的图像格式,请参见此处:

https://developer.android.com/reference/android/media/Image#getFormat()

您的byte []不是NV21,并且您指定了IMAGE_FORMAT_NV21并导致错误

与camera2的最直观的集成如下所示:

实例化ImageReader时指定JPEG格式。

onImageAvailable将带给您android.media.Image,您可以直接使用FirebaseVisionImage.fromMediaImage(...)创建FirebaseVisionImage。 (您可以从官方文档here中找到如何计算轮换信息)

如果必须执行两个活动,则需要解决android.media.Image不可打包的事实。我建议您先将其转换为可打包的位图,然后将其直接设置为Intent extra(由您决定。仅从最终用户的角度考虑,通常不会看到条形码被保存到我的图片库中。

因此,您可能需要考虑跳过将其保存到文件的步骤。稍后,在第二活动中,您可以使用FirebaseVisionImage.fromBitmap(...)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/536839.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB数据库泄露8亿电邮地址;微软开源Windows计算器;Linux 5.0 Kernel发布丨Q新闻...

本周要闻:华为正式宣布起诉美国政府;360 首席安全官谭晓生宣布离职;阿里开源 Flutter 应用框架 Fish Redux;微软开源 Windows 计算器;Linux 5.0 Kernel 发布;电邮验证服务泄漏 8 亿电邮地址;Chr…

mysql 视图 分页_mysql查看所有存储过程,函数,视图,触发器,表,分页

查询数据库中的存储过程和函数方法一:select name from mysql.proc where db your_db_name and type PROCEDURE //存储过程select name from mysql.proc where db your_db_name and type FUNCTION //函数方法二:show procedure status; //存储过程sh…

postman里测试文件上传(MultipartFile)

1、后台方法: Override PostMapping("/importNumberSpaceData") public DataImportOutDTO importNumberSpaceData(MultipartFile file) throws Exception { return dataImportOutDTO; } 2、启用postman 1、POST方法; 2、Body-form-data,key为后…

java解析上的jar包里的pom_Maven引入本地Jar包并打包进War包中的方法

1.概述在平时的开发中,有一些Jar包因为种种原因,在Maven的中央仓库中没有收录,所以就要使用本地引入的方式加入进来。2. 拷贝至项目根目录项目根目录即pom.xml文件所在的同级目录,可以在项目根目录下创建文件夹lib,如下…

持续集成之 Spring Boot 实战篇

本文作者: CODING 用户 - 何健 这次实战篇,我们借助「CODING 持续集成」,实现一个简单的 Spring Boot 项目从编码到最后部署的完整过程。本教程还有 B 站视频版,帮助读者更好地学习理解。 思路 在线上环境构建、测试、部署 这种情…

java静态工厂方法模式_设计模式:简单工厂模式(静态工厂方法模式)

简单工厂的构成包括三个角色:1)抽象产品类2)具体产品类(继承抽闲产品类)3)工厂类(生产具体产品)具体代码实现1、抽象产品类/*** 抽象类*/public abstract class Car {/*** 产品抽象方法,将会由具体产品类实现*/public abstract void driving();}2、具体产…

Kibana中的Coordinate Map地图报索引错误的问题

今天做地图定位展示,展示的是ApacheWeb服务器的访问日志文件中的来源IP。但是中间出现了报错环节,说是索引不能匹配到geo_point类型,实在是不懂这是在说什么,后来在网站找了方法就解决了。主要报错如下: 报错信息&…

mysql数据库安装在unix_Linux下的数据库二:在Linux/Unix平台安装MySQL

推荐使用RPM工具来进行Linux下的MySQL数据库安装。目前的MySQLrpm安装文件包是在SuSE Linux7.3系统平台上打造而成的,但是在绝大多数支持RPM和glibc的其他Linux平台中也可以进行安装。如果选择通用的RPM安装包,那么RPM将静态链接到Linux的线程中。下面步…

mysql时区设置gmt_将MySQL数据库时区设置为GMT

不,不可能在MySQL实例中更改单个数据库的时区.您可以检索服务器和客户端time_zone设置:SELECT global.time_zone, session.time_zone;您还可以更改整个MySQL实例的客户端时区或时区.但要敏锐地了解现有客户端连接的含义,以及如何解释已存储在实例中的DATETIME和TIME…

javaSE知识点汇总

javaSE知识点汇总Java基础知识精华部分写代码:1,明确需求。我要做什么?2,分析思路。我要怎么做?1,2,3。3,确定步骤。每一个思路部分用到哪些语句,方法,和对象。4,代码实现…

java中412是什么错_HTTP 412 错误 – 先决条件失败 (Precondition failed)

HTTP 412 错误 – 先决条件失败 (Precondition failed)介绍您的 Web 服务器认为,该服务器检测到客户端发送的 HTTP 数据流包括一个没有满足的‘先决条件’规范。HTTP 循环中的 412 错误任何客户端 ( 例如您的浏览器或我们的 CheckUpDown 机器人 ) ,都需要…

细谈页面回流与重绘

你将了解到: 什么是回流 什么是重绘 回流何时发生 重绘何时发生 如何避免回流和重绘 复制代码带着上面的问题,我们一探究竟 什么是回流 回流:英文是reflow 当render tree中的一部分(或全部),因为元素的规模尺寸、布局、隐藏等改变…

安卓 java中改布局_android-选项卡布局中的地图视图throwing,java....

我创建了一个具有选项卡布局的应用程序,单击选项卡后,我将打开一个使用Web视图的新活动.另外另一个选项卡使用地图视图,列表视图,图像视图.现在,我在Samsung Galaxy Y上安装了我的应用程序-运行正常.当我在Samsung Galaxy Tab 2上安装相同的应用程序时,当我第一次打开地图视图,…

怎么样修改PuTTY的默认字体和字符集

1.在窗口标题上点击右键,选择 Change Settings...2.在打开的配置窗口左边选择 Appearance,在右边点 Font settings 里面的 Change 按钮,选择好中文字体,比如:宋体、新宋体之类的3.选择配置窗口左边的 Translation&…

python 元组比较大小_为什么元组比列表更快?

所报道的“build设速度”比率只适用于常量元组(项目用文字表示)。 仔细观察(并在机器上重复 – 只需在shell /命令窗口input命令!)…:$ python3.1 -mtimeit -sx,y,z1,2,3 [x,y,z] 1000000 loops, best of 3: 0.379 usec per loop $ python3.1 -mtimeit […

windows软链接的建立及删除

2019独角兽企业重金招聘Python工程师标准>>> 1.建立举例 # 建立d:develop链接目录,指向远程的目标服务器上的e盘的对应目录。 mklink /d d:\develop \\138.20.1.141\e$\develop# 建立d:develop链接目录,指向远程的目标服务器上的e盘的对应目录…

php原生类,反序列化之PHP原生类的利用

正文文章围绕着一个问题,如果在代码审计中有反序列化点,但是在原本的代码中找不到pop链该如何?N1CTF有一个无pop链的反序列化的题目,其中就是找到php内置类来进行反序列化。基础知识首先还是来回顾一下序列化中的魔术方法,下面也…

Spectral Bounds for Sparse PCA: Exact and Greedy Algorithms[贪婪算法选特征]

目录 概括Sparse PCA Formulation非常普遍的问题Optimality ConditionsEigenvalue Bounds算法代码概括 这篇论文,不像以往的那些论文,构造优化问题,然后再求解这个问题(一般都是凸化)。而是,直接选择某些特…

js php调用webservice,php调用web services两种方法soap和curl

以http://www.webxml.com.cn/zh_cn/index.aspx一、使用soap调用//服务器支持soap扩展:/*Example 1:$client new SoapClient("http://fy.webxml.com.cn/webservices/EnglishChinese.asmx?wsdl");$parameters array("wordKey">"test");//中英…

JS基础-3

1.for in 对象中有多少组键值对,我们的FOR IN 循环就遍历多少次(不一定) 每一次循环KEY这个变量存储的都是当前循环这组键对值的属性名 1、KEY存储的值都是字符串格式的(不管属性名是否为数字) 2、在FOR IN 循环遍历的时候,大部分浏览器都是先把对象中的键值对进行排…