【问题标题】:How to make ImageIO support more formats如何让 ImageIO 支持更多格式
【发布时间】:2013-06-10 10:08:22
【问题描述】:

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

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

【问题讨论】:

  • 您在寻找什么格式?我使用 NEF 插件(Nikkon RAW 格式),我想我见过一个 ICO,但我可能是错的:P
  • 我正在寻找尽可能多的格式:P 您在哪里找到这些插件以及您是如何添加它们的?
  • jrawio (NEF)。基本上,您下载它并将其添加到类路径并开始读取文件...

标签: java plugins converter javax.imageio


【解决方案1】:

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

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

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

我写过a couple of plugins(主要是读者),它将扩展支持的格式数量(最显着的是 TIFF、PSD (Photoshop) 和 PICT,以及扩展的 JPEG 支持)。

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

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

【讨论】:

  • Harald 的插件效果很好,我刚刚添加了依赖项(6 个 JAR 文件)并解决了一些 JPEG 文件的一个非常令人费解的问题,这让我很头疼。谢谢@haraldK!
  • 仅供参考,即使它在列表中,PDF 也不存在。
  • @WMios 是的,对不起..我有 intention,创建一个 PDF 插件一次...现在它只是一个空的占位符模块,以防万一有人想要实施它。
【解决方案2】:

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

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

AFAIU,JAI 为“普通”ImageIO 不支持的其他格式提供 SPI。

更多详情请见JavaTM Image I/O Technology

【讨论】:

    猜你喜欢
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 2020-07-21
    • 2017-10-03
    • 2020-02-14
    • 1970-01-01
    相关资源
    最近更新 更多