javax.imageio.ImageIO是否以PPM格式读取图像(例如,rawbits P6)?
BufferedImage rawimage = ImageIO.read(new File(getClass().getResource("/lena.ppm").getFile()));
没有例外,但rawimage
是null
。其他格式如png和jpg工作正常。
我有一个尴尬的解决方法,通过剥离标题并逐行扫描ppm文件。 我假设JAVA JAI(现在是JDK的一部分)将开箱即用。
我在这里错过了什么吗?
答案 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