Я хочу загрузить изображение jpeg2000 (.jp2), используя Java JAI.
Я уже использую старую версию JAI, которая все еще поддерживает jpeg2000.Я скачал эти изображения с scihub.copernicus.eu.Эти файлы довольно большие (до 100 МБ).Я пробовал несколько разных подходов:
С 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
Я ожидал получить BufferedImage файла JPEP2000.
Это способ 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();
}
}
Однако переменное изображение не содержит никаких данных: Метод 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 или любым другим?Как выглядит ваш код?