问题标签 [javax.imageio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
21534 浏览

java - 由于连接超时,无法通过 ImageIO.read(url) 获取图像

以下代码似乎总是失败:

我检查了网址,它是一个有效的 jpg 图像。我得到的错误是:

线程“主”javax.imageio.IIOException 中的异常:无法从 URL 获取输入流!
在 javax.imageio.ImageIO.read(ImageIO.java:1385)
在 maestro.Main2.main(Main2.java:25)

原因:java.net.ConnectException:连接超时 在 java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:310)的
java.net.PlainSocketImpl.socketConnect(Native Method)在 java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl. java:176) 在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:163) 在 java.net.Socket.connect(Socket.java:546) 在 java.net.Socket.connect(Socket.java:495) 在sun.net.NetworkClient.doConnect(NetworkClient.java:174) 在 sun.net.www.http.HttpClient.openServer(HttpClient.java:409) 在 sun.net.www.http.HttpClient.openServer(HttpClient.java: 530)








在 sun.net.www.http.HttpClient.(HttpClient.java:240)
在 sun.net.www.http.HttpClient.New(HttpClient.java:321)
在 sun.net.www.http.HttpClient.New( HttpClient.java:338)
在 sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:814)
在 sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:755)
在 sun .net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:680)
在 sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1005)
在 java.net.URL.openStream(URL .java:1029)
在 javax.imageio.ImageIO.read(ImageIO.java:1383)
... 还有 1 个

Java 结果:1

这是什么意思?有趣的是,如果我将互联网连接更改为邻居的无线连接,它会突然工作。

0 投票
1 回答
396 浏览

java - 无法在 IP 摄像机上对动态生成的图像进行快速 I/O

我有一个存储在远程服务器上的图像文件(即http://example.com/images)。此文件夹中的图像以每 100 毫秒 1 个图像的速度更新 想想传输 MJPEG 图像的网络摄像机

我正在使用 apache HTTP 客户端 api 连接到我的远程服务器。我正在获取内容流

我将输入流包装在 BufferedInputStream 中以获得更快的 I/O 。但是由于图像的生成速度非常快,而且它们的平均大小为 250kb。

我想使用 FileChannel 和 MemoryMappedBuffers 等 NIO 功能来提高 I/O 性能以及以非阻塞模式访问远程服务器上生成的图像文件。

但是无论我看到什么样本都在谈论创建以文件对象为参数的 FileInputStream / RandomAccessFiles。

我从远程服务器获取 InputStream 作为响应,我无法将其转换为 FileInputStream 以获取 FileChannel。

我想知道apache http客户端api中是否有任何提供fileChannels的实现。

或者我应该探索套接字以获取通道访问权限。我也探索过 javax.imageIO ,但不确定它是否能满足我对更快 I/O 的要求

0 投票
3 回答
1768 浏览

java - ImageIO.write 是否缓冲?

我应该写吗

代替

即 ImageIO 文件操作是否默认缓冲?

谢谢!

0 投票
5 回答
37994 浏览

java - ImageIO 无法写入 JPEG 文件

我有一个 BufferedImage 我正在尝试写入 jpeg 文件,但我的 Java 程序抛出异常。我能够成功地将相同的缓冲区保存为 gif 和 png。我曾尝试在 Google 上四处寻找解决方案,但无济于事。

代码:

例外:

0 投票
1 回答
14491 浏览

java - 如何在 Java 中读取 PGM 图像?

我觉得我在这里遗漏了一些简单的东西(像往常一样)。

我正在尝试使用 Java 读取 PGM 图像。Matlab 做得很好 - 在 Matlab 中输出图像像素(例如,一个小的 32x32 图像)给了我这样的东西:

然而,我的 Java 阅读器输出如下:

看起来 127 以上的像素值用 65533 填充,尽管它确实得到了一些不正确的随机值,甚至将几乎整个底行分配为 -1 的值。

这是我正在使用的代码:

任何想法将不胜感激。

编辑这里是无符号 PGM 值:

标题如下所示:

编辑#2

下面是概念验证代码的完整输出:

抛出的异常中提到的第 49 行是:

我敢肯定,这个问题与这些图像文件由 ASCII 文本/数字以及二进制图像数据组成的事实有关。但是如果 Java 读取 PNG 没有问题,为什么缺少对 PGM 的支持呢?

编辑 3

好的,我找到了一个可行的实现......不幸的是,它已被弃用:

根据 Java 文档,StreamTokenizer(InputStream)构造函数已被弃用,因为该DataInputStream.readLine()方法不能正确地将原始字节转换为字符。但是,它似乎适用于标题的这种特定情况,并且显然适用于随后的二进制图像数据。

不幸的是,它仍然被弃用,并且似乎通过混合 a如文档所建议的那样仅在读取标头并尝试使用读取原始字节后BufferedReader导致s 。仍在寻找解决方案...EOFExceptionDataInputStream

0 投票
2 回答
1257 浏览

java - JAI ImageIO-core codecLib源码

JAI ImageIO-core 带有一组原生编解码器。编解码器捆绑在一组 .so 和 .dll 文件中。主要是clib_jiio.dll clib_jiio_sse2.dll clib_jiio_util.dll。我能够找到 mediaLib (mlib) 的源代码,但找不到这些编解码器的源代码。有谁知道来源在哪里?或者如果它们根本不是开源的?

0 投票
1 回答
860 浏览

java - JAI FileLoad/FileStore 操作与 JAI ImageRead/ImageWrite 操作。差异?

JAI 的 FileLoad/FileStore 操作与其 ImageRead/ImageWrite 操作有什么区别?

一套比另一套更好吗?哪些应该用作默认值?

0 投票
1 回答
1584 浏览

iphone - ImageIO:错误 - 未找到 MetadataLib.dylib

有时运行我的应用程序时,我的控制台中会出现一个奇怪的错误:

我不确定这与什么有关,但我正在投放 AdMobs 广告。

0 投票
1 回答
1612 浏览

java - 使用元数据创建 jpeg 文件

我有一个Java应用程序,它创建一个BufferedImage并将其作为 JPEG 保存到磁盘。我真的很想为图像添加标题。为了防止图像被图像本身的文本挤占,如果我可以将标题写入 JPEG 的元数据,那就太好了。

我一直在到处寻找解决方案,但没有找到任何令人满意的东西。Sanselan出现了很多,但我还没有弄清楚如何正确使用它。我找到了修改现有元数据的示例,但我的文件不包含元数据,因为它们只是从 ImageIO.write() 或 Sanselan.writeImage() 创建的。

我发现另一篇文章可以满足我的要求,但它是用 C# 编写的,我需要 Java。

任何帮助将不胜感激。

0 投票
3 回答
4428 浏览

java - 将PNG图像快速加载到java中的数组中

我想加载(和解码)PNG 图像并将它们转换为 Java 中的一维数组。我显然可以使用 ImageIO.read() 来执行此操作,然后将像素复制到数组中,但这会消耗两倍的内存(光栅 + 最终数组),并且它涉及的处理时间比我想要的要多。

我该怎么办?最坏的情况是我可以自己实现 PNG 规范,但这似乎是一项相当复杂的任务。理想情况下,我想要一个可以“插入”的 PNG 实现。不太理想但仍然很好的是一个易于理解的(与 com.sun 代码不同)PNG 阅读器,我可以(并且将被允许)修改。