以ppm格式读取的Java ImageIO读取图像返回null

时间:2014-04-04 18:03:56

标签: java javax.imageio ppm

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

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

没有例外,但rawimagenull。其他格式如png和jpg工作正常。

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

我在这里错过了什么吗?

3 个答案:

答案 0 :(得分:2)

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

对于它不支持的格式,

ImageIO.read()会返回null。这是预期/记录的行为。

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

答案 1 :(得分:1)

解码PPM文件本身不可用:“Image I/O内置支持GIF,PNG,JPEG,BMP和WBMP。”但您可以找到具有此支持的库(或插件),只需搜索 java ppm imagereader之类的内容。

答案 2 :(得分:0)

使用此页面 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