我正在尝试拆分多页纸,而我正在使用ImageIo。在Eclipse中,我的代码工作正常,但是当我导出到runnabe .jar时,它不起作用,并且没有异常返回。它简单地停止工作并关闭。
我已经尝试使用JAI编码和解码,但是很多图像只是返回了“不支持的压缩类型”的异常,因此我决定使用ImageIo.read和ImageIo.createImageInputStream分割我的tiff文件,至少在Eclipse中,它可以完美运行。仅当我将类导出为可运行的jar时,才会出现此问题。
我也尝试过使用myClass.class.getResourceAsStream(tiff.getPath()),尝试过myClass.class.getResourcesStream(“ / Images /” + tiff.getName()),但始终返回null ...我真的陷在这个问题中...
private static List<BufferedImage> splitTiff(File tiff) throws IOException {
List<BufferedImage> images = new ArrayList<BufferedImage>();
InputStream in = new FileInputStream(tiff.getAbsolutePath());
try {
logger.info(" -- Creating ImageInputStream.");
ImageInputStream is = ImageIO.createImageInputStream(in);
logger.info(" -- ImageInputStream created.");
if (is == null || is.length() == 0) {
logger.info(" -- Input error. ");
throw new IOException("Image file format not supported by ImageIO: " + tiff.getAbsolutePath());
}
Iterator<ImageReader> iterator = ImageIO.getImageReaders(is);
if (iterator == null || !iterator.hasNext()) {
throw new IOException("Image file format not supported by ImageIO: " + tiff.getAbsolutePath());
}
// We are just looking for the first reader compatible:
ImageReader reader = (ImageReader) iterator.next();
iterator = null;
reader.setInput(is);
for (int i = 0; i < reader.getNumImages(true); i++) {
BufferedImage splitedImage = reader.read(i);
images.add(splitedImage);
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
throw new IOException("Image file format not supported by ImageIO: " + tiff.getAbsolutePath());
} finally {
in.close();
}
return images;
}
我在ImageIO方法前后放置了一些logger.infos,以查看代码在哪里停止。我的日志仅显示“正在创建ImageInputStream”。并关闭罐子。我不知道出什么事了...有人可以帮我吗?