【发布时间】:2018-12-21 08:59:17
【问题描述】:
我想使用 Java JAI 加载 jpeg2000 图像 (.jp2)。
我已经在使用仍然支持 jpeg2000 的旧 JAI 版本。我从 scihub.copernicus.eu 下载了这些图像。这些文件相当大(最大 100 MB)。我尝试了几种不同的方法:
-
使用 java 的标准方式是这样的:
public class Main { public static void main(String[] args) throws IOException { String path = "C:\\temp\\B2.jp2"; File inputFile = new File(path); Image result = ImageIO.read(inputFile); } }
以下堆栈跟踪发生异常:
Exception in thread "main" java.lang.RuntimeException: An uncaught runtime exception has occurred
at com.sun.media.imageioimpl.plugins.jpeg2000.J2KReadState.initializeRead(J2KReadState.java:708)
at com.sun.media.imageioimpl.plugins.jpeg2000.J2KReadState.<init>(J2KReadState.java:209)
at com.sun.media.imageioimpl.plugins.jpeg2000.J2KImageReader.read(J2KImageReader.java:449)
at javax.imageio.ImageIO.read(ImageIO.java:1448)
at javax.imageio.ImageIO.read(ImageIO.java:1308)
at Main.main(Main.java:16)
Caused by: java.io.IOException: File too long.
at jj2000.j2k.fileformat.reader.FileFormatReader.readFileFormat(FileFormatReader.java:207)
at com.sun.media.imageioimpl.plugins.jpeg2000.J2KReadState.initializeRead(J2KReadState.java:418)
... 5 more
我希望获得 JPEP2000 文件的 BufferedImage。
-
这是JAI加载图片的默认方式。
public class Main { public static void main(String[] args) throws IOException { String path = "C:\\temp\\B2.jp2"; File inputFile = new File(path); RenderedOp image = JAI.create("fileload", inputFile.getPath()); Image result = image.getAsBufferedImage(); } }
但是变量 image 不包含任何数据: getAsBufferedImage() 方法抛出以下异常:
Exception in thread "main" java.lang.RuntimeException: - Unable to render RenderedOp for this operation.
at javax.media.jai.RenderedOp.createInstance(RenderedOp.java:827)
at javax.media.jai.RenderedOp.createRendering(RenderedOp.java:867)
at javax.media.jai.RenderedOp.getColorModel(RenderedOp.java:2242)
at javax.media.jai.PlanarImage.getAsBufferedImage(PlanarImage.java:2498)
at javax.media.jai.PlanarImage.getAsBufferedImage(PlanarImage.java:2546)
at Main.main(Main.java:15)
任何其他图片格式都可以正常工作。您使用哪些 JAI 库来加载 JPEG2000 文件? Javax 或 github 或任何其他提供的库?你的代码是什么样的?
【问题讨论】:
-
任何遇到此问题的人都可以查看stackoverflow.com/q/63091001/1847202
标签: java jai jpeg2000 sentinel2