4

我目前正在使用 ImageIO 用 Ja​​va 编写图像转换器。不幸的是 ImageIO 不支持许多格式。javadoc 说它可以使用插件进行扩展,但我找不到任何插件。我尝试过 JAI(Java 高级成像),但它似乎是一个全新的库,而不仅仅是一个插件。

你知道如何让 ImageIO 支持更多格式吗?

4

2 回答 2

9

ImageIO 使用服务提供者 API,大多数插件都以 jar 的形式出现,您只需将其放入类路径中即可。ImageIO 会自动拾取它们。

如果您列出需要支持的格式,可能更容易给出好的答案。

如前所述,JAI 添加了一些格式支持(请注意,您需要 jai-imageio.jar,而不是完整的 JAI 包)。警告:它们中的许多都需要原生库支持才能发挥作用,而且该项目似乎被 Oracle 搁置了。

我编写了几个插件(主要是阅读器),它们将扩展支持的格式数量(最值得注意的是 TIFF、PSD (Photoshop) 和 PICT,以及扩展的 JPEG 支持)。

如果您需要相机 RAW 文件支持,jrawio 是另一个很好的例子(如评论中所述)。

谷歌搜索带来了更多。正如我所说,这完全取决于您需要什么格式。

于 2013-06-10T10:31:08.213 回答
2

javax.imageio对格式的支持基于服务提供者接口工作。SPI 只是一个特殊的 Jar,它:

  1. 提供用于解码/编码图像的类。
  2. 将文件放在 Jar 中的某个位置,以标识进行编码和解码的类。

AFAIU, JAI 为 'plain' 不支持的其他格式提供 SPI ImageIO

有关详细信息,请参阅Java TM图像 I/O 技术

于 2013-06-10T10:18:02.677 回答