问题标签 [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.
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
这是什么意思?有趣的是,如果我将互联网连接更改为邻居的无线连接,它会突然工作。
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 的要求
java - ImageIO.write 是否缓冲?
我应该写吗
代替
即 ImageIO 文件操作是否默认缓冲?
谢谢!
java - ImageIO 无法写入 JPEG 文件
我有一个 BufferedImage 我正在尝试写入 jpeg 文件,但我的 Java 程序抛出异常。我能够成功地将相同的缓冲区保存为 gif 和 png。我曾尝试在 Google 上四处寻找解决方案,但无济于事。
代码:
例外:
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 。仍在寻找解决方案...EOFException
DataInputStream
java - JAI ImageIO-core codecLib源码
JAI ImageIO-core 带有一组原生编解码器。编解码器捆绑在一组 .so 和 .dll 文件中。主要是clib_jiio.dll clib_jiio_sse2.dll clib_jiio_util.dll。我能够找到 mediaLib (mlib) 的源代码,但找不到这些编解码器的源代码。有谁知道来源在哪里?或者如果它们根本不是开源的?
java - JAI FileLoad/FileStore 操作与 JAI ImageRead/ImageWrite 操作。差异?
JAI 的 FileLoad/FileStore 操作与其 ImageRead/ImageWrite 操作有什么区别?
一套比另一套更好吗?哪些应该用作默认值?
iphone - ImageIO:错误 - 未找到 MetadataLib.dylib
有时运行我的应用程序时,我的控制台中会出现一个奇怪的错误:
我不确定这与什么有关,但我正在投放 AdMobs 广告。
java - 使用元数据创建 jpeg 文件
我有一个Java应用程序,它创建一个BufferedImage并将其作为 JPEG 保存到磁盘。我真的很想为图像添加标题。为了防止图像被图像本身的文本挤占,如果我可以将标题写入 JPEG 的元数据,那就太好了。
我一直在到处寻找解决方案,但没有找到任何令人满意的东西。Sanselan出现了很多,但我还没有弄清楚如何正确使用它。我找到了修改现有元数据的示例,但我的文件不包含元数据,因为它们只是从 ImageIO.write() 或 Sanselan.writeImage() 创建的。
我发现另一篇文章可以满足我的要求,但它是用 C# 编写的,我需要 Java。
任何帮助将不胜感激。
java - 将PNG图像快速加载到java中的数组中
我想加载(和解码)PNG 图像并将它们转换为 Java 中的一维数组。我显然可以使用 ImageIO.read() 来执行此操作,然后将像素复制到数组中,但这会消耗两倍的内存(光栅 + 最终数组),并且它涉及的处理时间比我想要的要多。
我该怎么办?最坏的情况是我可以自己实现 PNG 规范,但这似乎是一项相当复杂的任务。理想情况下,我想要一个可以“插入”的 PNG 实现。不太理想但仍然很好的是一个易于理解的(与 com.sun 代码不同)PNG 阅读器,我可以(并且将被允许)修改。