为什么 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() 这么慢? 的相关文章

  • 更改启动 Java 运行时后 IntelliJ IDEA 无法在 Ubuntu 上启动

    之前 我的 IntelliJ 运行得很好 但我使用的是 java 6 所以我的项目无法使用 gradle 运行 我用命令将java切换到版本8sudo update alternatives config java 我检查了java ver
  • Spring JDBC 模板。如何获取pl/sql脚本的结果变量

    我正在使用 NamedParameterJdbcTemplate 来运行 pl sql 脚本 但我不知道如何获取out变量的值 id out 提前致谢 String script declare begin if myFunc id in
  • Java Swing 应用程序消息对话框帮助

    我正在开发 Java Swing 应用程序 我需要创建一个如图所示的对话框 我不知道这个的名字 我无法解释 所以我附上一张照片 请告诉我这叫什么以及如何在我的 GUI 应用程序中创建它 给猫剥皮的方法不止一种 public final cl
  • Java EE 6 和单例

    谁能解释一下在 Java EE 6 应用程序中实现 Singleton 的完整过程 我假设我不应该以声明静态变量的典型方式创建单例 而应该使用 Singleton注解 我必须这样做吗 难道只是声明一下的情况 Singleton就是这样 我还
  • UcanaccessSQLException:UCAExc:::3.0.1 表达式的数据类型不是布尔值

    我有一张如下图所示的表格 我需要获取其库尔德语单词包含的所有英语单词 r 所以我不能使用 select English from Table1 where Kurdish like 因为它还接受另一个单词中的子字符串 例如 当我尝试在查询中
  • Spring安全+LocaleResolver

    我需要在身份验证成功后更改区域设置 区域设置解析器
  • Hibernate 每个子类一个表继承策略的效率

    我正在考虑 Hibernate 管理的类层次结构的表布局 当然 每个子类表技术在我看来是一般意义上最合适的 然而 通过逻辑思考 我对其性能有些担忧 尤其是随着子类数量的扩展 举一个非常简短 且经典 的示例 假设您有以下类 public ab
  • 仅使用公钥在 HD 钱包中生成以太坊地址 (bitcoinj/web3j)

    我尝试为使用 bitcoinj 库实现的 HD 钱包密钥生成以太坊地址 但我感到困惑 DeterministicSeed seed new DeterministicSeed some seed code here null 1409478
  • Grails 项目 - Servlet 调用 - ClassNotFoundException:javax.servlet.AsyncContext

    我在用 IntelliJ IDEA 终极版 12 4 grails 2 2 0 BuildConfig groovy 文件中的 grails servlet version 2 5 并实现了简单的 servlet post 请求 使用 RE
  • Glassfish 4 - JDBC 领域

    Glassfish 4 中的密码加密算法和摘要算法有什么区别 因为Password加密算法不能为空 所以我使用了MD5 Encoding使用了Hex 摘要算法为空 因此默认为 SHA 256 但是 如果我使用 JAAS 制作一个简单的登录应
  • 模式更新后 jOOQ 生成的类的运行时验证?

    我用org jooq util DefaultGenerator在构建过程中生成 jOOQ 类来表示我的数据库模式 当应用程序运行时 架构预计会在应用程序不知情的情况下发生更改 此类更改可能与已生成的代码兼容 也可能不兼容 如何在运行时检测
  • JTree ConvertValueToText 返回在更改时被截断

    我有一个自定义树实现convertValueToText 此实现取决于某些全局状态 如果返回的字符串比先前返回的字符串更长 实际上我认为更宽 因为以像素为单位触发它 则文本将被截断并用 填充 当重绘是由 取消 选择元素或某个元素引起时 情况
  • Eclipse RCP - 将视图与编辑器区域堆叠?

    在开发 Eclipse RCP 应用程序时 是否可以将视图与编辑器区域堆叠在一起 像这样 我有多个列表 表格 我想创建一种预览组合 当通过单击鼠标选择列表上的项目时 我希望我的预览合成显示该项目的数据 如果用户双击某个项目 我想在预览合成后
  • 如何在java中从包含.0的浮点数中删除小数部分

    我只想删除包含的浮点数的小数部分 0 所有其他数字都是可以接受的 例如 I P 1 0 2 2 88 0 3 56666 4 1 45 00 99 560 O P 1 2 2 88 3 567 4 1 45 99 560 有什么方法可以做到
  • 自 JRE 1.7.0_25 起,Batik 无法进行转换

    自从我更新到 JAVA 1 7 0 25 以来 蜡染在应用转换时会抛出异常 堆栈跟踪是 java awt image ImagingOpException Unable to transform src image at java awt
  • JavaFX Integer Spinner (IntegerSpinnerValueFactory) 不会将值回绕到最小值

    我创建了一个带有值的整数微调器 min 5 max 15 and initialValue 12 and wrapAround true 一旦旋转器到达max 15 增量期间的值 而不是将值重置为min 5 正如它所说文档 https op
  • Web 服务客户端的 AXIS 与 JAX-WS

    我决定用Java 实现Web 服务客户端 我已经在 Eclipse 中生成了 Axis 客户端 并使用 wsimport 生成了 JAS WS 客户端 两种解决方案都有效 现在我必须选择一种来继续 在选择其中之一之前我应该 考虑什么 JAX
  • 对于双核手机,availableProcessors() 返回 1

    我最近购买了一部 Moto Atrix 2 手机 当我尝试查看手机中的处理器规格时 Runtime getRuntime availableProcessors 返回 1 proc cpuinfo 也仅包含有关处理器 0 的信息 出于好奇
  • Eclipse 如何创建一个未解决编译问题的类?

    当我尝试使用 javac 编译此类时 出现编译错误并且未创建 Test class public class Test public static void main String args int x 1L lt this cannot
  • 将 SQL 数据中的一行映射到 Java 对象

    我有一个 Java 类 其实例字段 以及匹配的 setter 方法 与 SQL 数据库表的列名相匹配 我想优雅地从表中获取一行 到 ResultSet 中 并将其映射到此类的实例 例如 我有一个 Student 类 其中包含实例字段 FNA

随机推荐

  • 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