【问题标题】:Java ImageIO read image in ppm format return nullJava ImageIO 读取 ppm 格式的图像返回 null
【发布时间】:2014-04-04 18:03:55
【问题描述】:

javax.imageio.ImageIO 是否完全读取 PPM 格式(例如 rawbits P6)的图像?

BufferedImage rawimage = ImageIO.read(new File(getClass().getResource("/lena.ppm").getFile()));

没有例外,但rawimagenull。 png 和 jpg 等其他格式也可以正常工作。

我有一个尴尬的解决方法,即剥离标题并逐行扫描 ppm 文件。 我假设 JAVA JAI(现在是 JDK 的一部分)会开箱即用。

我错过了什么吗?

【问题讨论】:

标签: java javax.imageio ppm


【解决方案1】:

据我所知,JAI 仍然不是 JDK/JRE 的一部分,它是一个单独的下载/安装。而且,是的,您将需要 JAI ImageIO(或其他 3rd 方插件,如 my own)来读取 PPM,它不支持开箱即用。

ImageIO.read() 将返回 null 对于它不支持的格式。这是预期/记录的行为。

您可以使用ImageIO.getReaderFormatNames() 查询已安装支持的格式。

【讨论】:

    【解决方案2】:

    解码 PPM 文件本身不可用:“Image I/O 具有对 GIF、PNG、JPEG、BMP 和 WBMP 的内置支持。”但是你也许能找到一个支持这个的库(或插件),只要搜索类似 java ppm imagereader的东西。

    【讨论】:

      【解决方案3】:

      使用此页面 PPM (Portable PixMap), PGM, PBM image file java image reader/writer 中的 ImageIO 插件(在 LGPL 下获得许可),您可以读取/写入 rawbit PPM 文件。

      JAR 文件至少需要以下文件

      META-INF/
      META-INF/MANIFEST.MF
      META-INF/services/
      META-INF/services/javax.imageio.spi.ImageReaderSpi
      META-INF/services/javax.imageio.spi.ImageWriterSpi
      uk/
      uk/co/
      uk/co/mmscomputing/
      uk/co/mmscomputing/imageio/
      uk/co/mmscomputing/imageio/ppm/
      uk/co/mmscomputing/imageio/ppm/PPMConstants.class
      uk/co/mmscomputing/imageio/ppm/PPMImageReader.class
      uk/co/mmscomputing/imageio/ppm/PPMImageReaderSpi.class
      uk/co/mmscomputing/imageio/ppm/PPMImageWriter.class
      uk/co/mmscomputing/imageio/ppm/PPMImageWriterSpi.class
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-22
        • 2021-08-05
        • 2011-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多