为什么 ImageIO.read() 这么慢?

2024-03-18

所以我试图从流中获取 PNG 图像。

image = ImageIO.read(inputStream);

这段代码运行了十秒钟!我认为问题出在缓慢的InputStream上,所以我尝试先将它加载到缓冲区中。

byte[] bytes = inputStreamToBytes(inputStream);
image = ImageIO.read(new ByteArrayInputStream(bytes));

你猜怎么着!将其从 InputStream 加载到缓冲区大约需要 100 毫秒,但仅从字节数组读取它就需要大量时间!十(十)秒即可阅读!来自 RAM!

我是在树莓派上做的。是的,我知道这是一个玩具,而不是真正的计算机。所以我尝试在 MacBook Air 上进行此操作。确实,两秒比十秒好。但对于一些 800x600 PNG 来说仍然很多。那么为什么会这样呢?该怎么办?


您可能需要安装 Java Native IO 库,默认情况下不安装它们。

http://www.oracle.com/technetwork/java/install-jai-imageio-1-0-01-139659.html http://www.oracle.com/technetwork/java/install-jai-imageio-1-0-01-139659.html

如果您没有安装此库,则图像上的所有操作都在 java 中执行,而不是在本机中执行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 ImageIO.read() 这么慢? 的相关文章

  • 带路径压缩算法的加权 Quick-Union

    有一种 带路径压缩的加权快速联合 算法 代码 public class WeightedQU private int id private int iz public WeightedQU int N id new int N iz new
  • TreeMap 删除所有大于某个键的键

    在项目中 我需要删除键值大于某个键的所有对象 键类型为Date 如果重要的话 据我所知TreeMapJava中实现的是红黑树 它是一种二叉搜索树 所以我应该得到O n 删除子树时 但除了制作尾部视图并一一删除之外 我找不到任何方法可以做到这
  • 两个整数乘积的模

    我必须找到c c a b mod m a b c m 是 32 位整数 但 a b 可以超过 32 位 我正在尝试找出一种计算 c 的方法 而不使用 long 或任何 gt 32 位的数据类型 有任何想法吗 如果m是质数 事情可以简化吗 注
  • Android:文本淡入和淡出

    我已阅读此 stackoverflow 问题和答案 并尝试实现文本淡入和淡出 Android中如何让文字淡入淡出 https stackoverflow com questions 8627211 how to make text fade
  • 如何在 JPQL 或 HQL 中进行限制查询?

    在 Hibernate 3 中 有没有办法在 HQL 中执行相当于以下 MySQL 限制的操作 select from a table order by a table column desc limit 0 20 如果可能的话 我不想使用
  • 从 MATLAB 调用 Java?

    我想要Matlab程序调用java文件 最好有一个例子 需要考虑三种情况 Java 内置库 也就是说 任何描述的here http docs oracle com javase 6 docs api 这些项目可以直接调用 例如 map ja
  • 断言 Kafka 发送有效

    我正在使用 Spring Boot 编写一个应用程序 因此要写信给 Kafka 我这样做 Autowired private KafkaTemplate
  • 如何在java中将日期格式从YYMMDD更改为YYYY-MM-DD? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我从机器可读代码中获取日期格式为 YYMMDD 如何将其更改为 YYYY MM DD 例如我收到 871223 YYMMDD 我想把它改成
  • Sun 在 EDT 之外做 GUI 工作的演示?

    我正在看SplashDemo java http download oracle com javase tutorial uiswing examples misc SplashDemoProject src misc SplashDemo
  • 将人类日期(当地时间 GMT)转​​换为日期

    我正在服务器上工作 服务器正在向我发送 GMT 本地日期的日期 例如Fri Jun 22 09 29 29 NPT 2018在字符串格式上 我将其转换为日期 如下所示 SimpleDateFormat simpleDateFormat ne
  • Java继承,扩展类如何影响实际类

    我正在查看 Sun 认证学习指南 其中有一段描述了最终修饰符 它说 如果程序员可以自由地扩展我们所知的 String 类文明 它可能会崩溃 他什么意思 如果可以扩展 String 类 我是否不会有一个名为 MyString 的类继承所有 S
  • Jetty、websocket、java.lang.RuntimeException:无法加载平台配置器

    我尝试在 Endpoint 中获取 http 会话 我遵循了这个建议https stackoverflow com a 17994303 https stackoverflow com a 17994303 这就是我这样做的原因 publi
  • 如何将 HTML 链接放入电子邮件正文中?

    我有一个可以发送邮件的应用程序 用 Java 实现 我想在邮件中放置一个 HTML 链接 但该链接显示为普通字母 而不是 HTML 链接 我怎样才能将 HTML 链接放入字符串中 我需要特殊字符吗 太感谢了 Update 大家好你们好 感谢
  • 使用 Elastic Beanstalk 进行 Logback

    我在使用 Elastic Beanstalk 记录应用程序日志时遇到问题 我正在 AWS Elastic Beanstalk 上的 Tomcat 8 5 with Corretto 11 running on 64bit Amazon Li
  • 部署 .war 时出现 Glassfish 服务器错误:部署期间发生错误:准备应用程序时出现异常:资源无效

    我正在使用以下内容 NetBeans IDE 7 3 内部版本 201306052037 爪哇 1 7 0 17 Java HotSpot TM 64 位服务器虚拟机 23 7 b01 NetBeans 集成 GlassFish Serve
  • java 中的蓝牙 (J2SE)

    我是蓝牙新手 这就是我想做的事情 我想获取连接到我的电脑上的蓝牙的设备信息并将该信息写入文件中 我应该使用哪个 api 以及如何实现 我遇到了 bluecove 但经过几次搜索 我发现 bluecove 不能在 64 位电脑上运行 我现在应
  • Java RMI - 客户端超时

    我正在使用 Java RMI 构建分布式系统 它必须支持服务器丢失 如果我的客户端使用 RMI 连接到服务器 如果该服务器出现故障 例如电缆问题 我的客户端应该会收到异常 以便它可以连接到其他服务器 但是当服务器出现故障时 我的客户端什么也
  • Java 11 - 将 Spring @PostConstruct 替换为 afterPropertiesSet 或使用 initMethod

    我正在使用 spring 应用程序 有时会使用 PostConstruct用于代码和测试中的设置 看来注释将被排除在外Java 11 https www baeldung com spring postconstruct predestro
  • 由 Servlet 容器提供服务的 WebSocket

    上周我研究了 WebSockets 并对如何使用 Java Servlet API 实现服务器端进行了一些思考 我没有花费太多时间 但在使用 Tomcat 进行一些测试时遇到了以下问题 如果不修补容器或至少对 HttpServletResp
  • java'assert'和'if(){}else exit;'之间的区别

    java和java有什么区别assert and if else exit 我可以用吗if else exit代替assert 也许有点谷歌 您应该记住的主要事情是 if else 语句应该用于程序流程控制 而assert 关键字应该仅用于

随机推荐

  • MySQL 索引 - 根据此表和查询,最佳实践是什么

    我有这张表 500 000 行 CREATE TABLE IF NOT EXISTS listings id int 10 unsigned NOT NULL AUTO INCREMENT type tinyint 1 NOT NULL D
  • 使用 MySQL C++ 连接器解决未定义的引用

    我正在尝试编译它 也在 mysql c 连接器文档中列出 http pastebin com HLv4zR0r http pastebin com HLv4zR0r 但我收到这些错误 http pastebin com 3t0UbeFy h
  • Keras 对隐藏层定义的澄清

    我正在遵循有关在 Keras 中构建简单深度神经网络的教程 提供的代码是 create model model Sequential model add Dense 12 input dim 8 activation relu model
  • “安全”DLL 注入

    抱歉 这不是一个很好的问题 我有一个程序 当从资源管理器打开文件时需要发出警报 即调用 ShellExecute A W 不幸的是 微软删除了允许您在 Vista 及更高版本中挂钩这些事件的 COM 接口 IShellExecuteHook
  • 将 numpy 数组保存为具有自定义颜色的单通道 png

    我有一个整数 numpy 数组 表示具有很少值 大约 2 5 的图像 我想将其保存为 png 文件 并为每个值提供自定义颜色 我正在尝试这样 import numpy as np from PIL import Image array np
  • 设置 body onload 而不使用 标签

    我正在尝试在身体加载后触发一个功能 我知道你可以从 body 标签中执行此操作 但如果可能的话 我更愿意从 JS 中执行此操作 例如 document getElementsByTagName body onload someFunc 这对
  • 就 Android 上的路径而言,多用户功能如何工作?

    背景 从 4 2 版本开始 Android 支持多用户 链接here http developer android com about versions android 4 2 html MultipleUsers and here htt
  • 矩阵 int mat[5][5] 与 int ** 相同吗? [复制]

    这个问题在这里已经有答案了 简单的一维数组被视为指针 但矩阵也是如此吗 然而 一个立方体int 5 5 5 也将被视为int 不 指向整数的指针与整数数组的数组不同 想想它们在记忆中会是什么样子 数组的数组 例如int a 2 2 a 0
  • 从另一个窗口(类)调用方法问题

    在 WPF 应用程序主窗口的代码隐藏文件中 我有一个使用 LINQ to SQL 查询数据库并将结果写入 ObservableCollection 的方法 public void GetStateByDate string shcode M
  • 实体框架代码优先属性与流畅的 API 配置相结合

    我可以将代码优先属性与 Entity Framework 中的实体的 Fluent API 配置结合使用吗 谢谢 是的你可以 我通常更喜欢定义一些约束 例如 通过使用来创建所需的属性 Required 或通过使用定义字符串属性的长度Stri
  • Angular 2 可以沿着路由器传递复杂的对象吗?

    是否可以通过路由器发送复杂的对象 这是我正在做和尝试做的事情 在搜索页面中 用户可以单击结果之一上的按钮 该按钮将调用导致该行触发的方法 this router navigate profile detail selection The s
  • 使用 SAX 和 Java 生成 XML [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人知道使用 SAX 框架 或类似框架 和 Java 编写 XML 的好教程 或者有一个好例子 吗 搜
  • 将 RGB 转换为 HSV 以及将 HSV 转换为 RGB(范围为 0-255)的算法

    我正在寻找从 RGB 到 HSV 的色彩空间转换器 特别是两种色彩空间的 0 到 255 范围 我已经使用它们很长时间了 此时不知道它们来自哪里 请注意 输入和输出 除了以度为单位的角度 都在 0 到 1 0 的范围内 注意 此代码不对输入
  • Java I/O - 重用InputStream对象

    无论如何 是否可以通过更改其内容来重用输入流 没有新的声明 例如 我能够做到非常接近我的要求 但还不够在下面的代码中我使用SequenceInputStream 每次我添加一个新的InputStream到那个顺序 但我想通过使用相同的 in
  • 在 iOS 7 中调整 ModalViewController 的大小并将其放置在中心

    我试图通过减少其宽度和高度来在 iPad 上显示 modalView 但问题是它不是中心对齐的 在 iOS 6 中它曾经工作得很好 但在 iOS 7 中它不是中心对齐的 下面是我的代码 m helpQA HelpQAViewControll
  • 如何让 Rust 单例的析构函数运行?

    这些是我所知道的在 Rust 中创建单例的方法 macro use extern crate lazy static use std sync Mutex Once ONCE INIT derive Debug struct A usize
  • 最小宽度布局。 Nexus 7 中的错误?

    使用layout swdp 限定符时 我得到的结果如附件中所示 sw 限定符应该意味着最小尺寸必须匹配或大于限定符 这似乎不适用于 Nexus 7 运行 4 2 1 我是否对最小宽度限定符的作用感到困惑 或者 N7 报告错误 为了重现我的测
  • Nuxt3 useAsyncData 无法在已安装的生命周期挂钩上工作

    我仍然对我在这里做错了什么感到有点困惑 本质上我有一个 vue 组件 我想在安装元素后异步加载一些数据 我正在使用 NUXT 3 和组合 API 看起来 onMounted 在渲染之前触发 并且没有正确接收数据 如果我将
  • 如何避免课堂自用

    我有以下课程 public class MyClass public void deleteOrganization Organization organization Delete organization Delete related
  • 为什么 ImageIO.read() 这么慢?

    所以我试图从流中获取 PNG 图像 image ImageIO read inputStream 这段代码运行了十秒钟 我认为问题出在缓慢的InputStream上 所以我尝试先将它加载到缓冲区中 byte bytes inputStrea